2012-05-08 14 views
18

Estoy usando VS2010 y WiX 3.6 para crear paquetes de MSI y agruparlos en la configuración de Bootstrapper. Aquí está mi código Boostrapper.Pasar los parámetros de paquete de paquete de arranque a msi

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Bundle Name="" Version="" Manufacturer="" UpgradeCode=""> 
     <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" /> 

     <Chain> 
       <MsiPackage SourceFile="Package1.msi"> 
       <MsiProperty Name="PARAM1" Value="[PARAM1]" /> 
       <MsiProperty Name="PARAM2" Value="[PARAM2]" /> 
       </MsiPackage> 
       <MsiPackage SourceFile="Package2.msi"> 
       <MsiProperty Name="PARAM1" Value="[PARAM1]" /> 
       <MsiProperty Name="PARAM2" Value="[PARAM2]" /> 
       </MsiPackage> 
     </Chain> 
    </Bundle> 
</Wix> 

Los paquetes MSI deben tener los parámetros especificados para poder ejecutarse. Normalmente, llamaría al "Packag21.msi PARAM1=1 PARAM2=2". Después de construir el proyecto, trato de pasar los parámetros a mi Bootstrapper.exe de la misma manera Bootstrapper.exe PARAM1=1 PARAM2=2, pero no parece pasarlos al MSI. Las instalaciones se cuelgan con la condición de parámetros faltantes.

¿Hay alguna manera de pasar los parámetros del exe al msi?

Respuesta

5

que actualmente no está disponible en el programa previo estándar: WixStdBa doesn't make the commandline properties available - ID: 3489809

Puede implementar dicha funcionalidad si crea su propia aplicación de programa previo.

EDIT: Aunque no se puede pasar los parámetros a su programa previo a través de línea de comandos, todavía se puede recoger la información en sus Bootstrapper diversas maneras:

ejemplo: Ajuste de una variable

<Variable Name="PARAM1" Value="SomeValue" Persisted="yes" Type="string" /> 

por ejemplo: la búsqueda del registro

<util:RegistrySearch Root="HKLM" Key="Software\SomeProduct" Value="SomeKey" Variable="PARAM1" Result="value"/> 
+0

Gracias. La confirmación de que esto no se puede hacer es útil. Publiqué la misma pregunta en la lista de correo de wix-users y obtuve la misma respuesta. –

32

Esto ya se ha implementado y está disponible a partir de la versión RC Wix 3.6 el 21 de mayo

Aquí es la idea general de cómo funciona:

<Wix> 
<Bundle> 
    <Variable Name="CommandLineArg" bal:Overridable="yes"/> 
    <Chain> 
     <MsiPackage> 
     <MsiProperty Name="CommandLineArg" Value="[CommandLineArg]"/> 
     </MsiPackage> 
    </Chain> 
</Bundle> 
</Wix> 

Tienes que hacer una variable de paquete que es reemplazable en la línea de comandos y luego pasar esa variable para su MSI.

+0

Esto no funciona. – Isaiah4110

+0

¡Ahora es trabajo! Gracias [user1513304] (http://stackoverflow.com/users/1513304/user1513304). – Dimiano

+0

¿De dónde se resuelve el espacio de nombres "bal"? VS inserta el atributo xmlns: bal = "" cuando escribo bal: Overridable = "yes". – grwww

Cuestiones relacionadas