2012-02-07 16 views
8

Estoy haciendo mi propio archivo prq para realizar la instalación de SQL CE 4.0 con la instalación de mi aplicación WPF. El instalador sigue fallando, y no estoy seguro de por qué. Parece que intenta ejecutar el CE exe, pero luego aparece una ventana de ayuda de Windows Installer con todas estas opciones de ayuda de línea de comandos. Hago clic en Aceptar y luego dice que la instalación de CE ha fallado. No sé cómo determinar qué está pasando mal.SQL CE 4.0 como InstallShield Prerrequisito

Aquí está mi contenido del archivo PRQ:

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
<conditions> 
    <condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition> 
</conditions> 
<files> 
    <file LocalFile="&lt;ISProductFolder&gt;\SetupPrerequisites\SSCERuntime_x86-ENU.exe" URL="http://www.microsoft.com/download/en/details.aspx?id=17876" FileSize="0,0"></file> 
</files> 
<execute file="SSCERuntime_x86-ENU.exe" cmdline="/passive /norestart" cmdlinesilent="/passive /norestart"></execute> 
<properties Id="{F7BF54C1-CA2C-4410-98DB-480769CE6547}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0."></properties> 
</SetupPrereq> 

sería muy apreciada Cualquier ayuda.

+0

Es posible que también desee considerar las opciones de implementación privadas que proporciona SQL CE. Según recuerdo (documentado en una respuesta mía por aquí en SO), hay un puñado de DLL y algunas configuraciones en su App.Config. Esto le permite hacer todo en una sola MSI sin necesidad de encadenar otras MSI. –

+0

Miré la implementación privada y parecía demasiado peluda. Mucho potencial para hacer algo mal. Terminé eliminando las opciones de cmdline y el instalador simplemente activa la solicitud de instalación de CE, por lo que funciona bien de esa manera. – Beanwah

+0

Realmente funciona muy bien. De hecho, en los últimos días vi una nueva Pregunta/Respuesta aquí donde la persona dijo que hicieron el despliegue privado y fue realmente simple y funcionó muy bien. De cualquier manera, la elección es tuya. –

Respuesta

6

que era capaz de conseguir que funcione a partir de lo que parece por lo

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
<conditions> 
    <condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition> 
</conditions> 
<files> 
    <file LocalFile=".\SSCERuntime_x86-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x86-ENU.exe" FileSize="0,0"></file> 
</files> 
<execute file="SSCERuntime_x86-ENU.exe" cmdline="/i /passive" cmdlinesilent="/i /passive"></execute> 
<properties Id="{05DCCDB5-57E0-4314-A016-874F228A8FAD}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0 x86."></properties> 
</SetupPrereq> 

El script x64

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
<conditions> 
    <condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition> 
</conditions> 
<files> 
    <file LocalFile=".\SSCERuntime_x64-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x64-ENU.exe" FileSize="0,0"></file> 
</files> 
<execute file="SSCERuntime_x64-ENU.exe" cmdline="/i /passive" cmdlinesilent="/i /passive"></execute> 
<properties Id="{05DCCDB5-57E0-4314-A016-874F228A8FAD}" Description="This prerequisite installs the Microsoft SQL Server Compact 4.0 x64."></properties> 
</SetupPrereq> 
+0

¡Gracias por compartir! – mmmmmm

+0

@Enzero: He creado 2 archivos PRQ diferentes para x86 y x64. Pero durante la instalación, muestra ambos archivos según sea necesario. ¿Cómo puedo omitir la instalación de archivos x86 para una terminal x64? –

2

En respuesta al comentario de la rishiJasapara, hice guiones basado en la respuesta anterior.

La idea es la misma, crear dos scripts, uno para x86 y otro para la plataforma x64. Debe seleccionar ambas prerrequisitos en su proyecto InstallShield, pero con los scripts enumerados a continuación en la página de instalación en el equipo de destino, verá el único que corresponde a la arquitectura del procesador de la máquina.

Microsoft SQL CE 4.0 x86.prq:

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
    <conditions> 
     <condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition> 
    </conditions> 
    <operatingsystemconditions> 
     <operatingsystemcondition CSDVersion="" Bits="1"></operatingsystemcondition> 
    </operatingsystemconditions> 
    <files> 
     <file LocalFile=".\SSCERuntime_x86-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x86-ENU.exe" CheckSum="0A55733CF406FBD05DFCFF5A27A0B4F7" FileSize="0,2379544"></file> 
    </files> 
    <execute file="SSCERuntime_x86-ENU.exe"></execute> 
    <properties Id="{2754916B-119B-4428-9F94-DC9E45072CCC}"></properties> 
    <behavior Failure="4" Reboot="2"></behavior> 
</SetupPrereq> 

Microsoft SQL CE 4.0 x64.prq:

<?xml version="1.0" encoding="UTF-8"?> 
<SetupPrereq> 
    <conditions> 
     <condition Type="32" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v4.0\ENU" FileName="DesktopRuntimeVersion" ReturnValue="4.0.8482.1"></condition> 
    </conditions> 
    <operatingsystemconditions> 
     <operatingsystemcondition CSDVersion="" Bits="2"></operatingsystemcondition> 
    </operatingsystemconditions> 
    <files> 
     <file LocalFile=".\SSCERuntime_x64-ENU.exe" URL="http://download.microsoft.com/download/0/5/D/05DCCDB5-57E0-4314-A016-874F228A8FAD/SSCERuntime_x64-ENU.exe" CheckSum="A417082ECAEDD95AFB41F73DC140C350" FileSize="0,2621240"></file> 
    </files> 
    <execute file="SSCERuntime_x64-ENU.exe"></execute> 
    <properties Id="{7CB7BE3C-614A-403F-94D9-5652285A3EDF}"></properties> 
    <behavior Failure="4" Reboot="2"></behavior> 
</SetupPrereq> 

Como se puede ver, la diferencia principal es "operatingsystemconditions" adicionales en wich correcta El paquete de instalación de SQL CE está determinado.

Lo probé en sistemas Windows 7 de 32 y 64 bits y realmente funciona bien.

Cuestiones relacionadas