sesion profesional precios plantillas pagina iniciar entrar cuenta crear blog wix installation wix3.6 bootstrapper burn

profesional - wix plantillas



Iniciar la aplicación después de la instalación usando WiX/Burn (3)

Puede agregar una variable a su paquete llamada "LaunchTarget" con una ruta al ejecutable que desea ejecutar:

<Variable Name="LaunchTarget" Value="[InstallFolder]/path/to/file.exe"/>

Después de la instalación, la pantalla de instalación exitosa mostrará un botón "Iniciar" que iniciará su aplicación.

Soy consciente de preguntas similares en WiX MSI, pero tengo problemas para iniciar una aplicación dentro de un archivo EXE bootstrapper creado con Burn después de la instalación. Mi paquete completo está abajo.

Si hay alguna diferencia en el escenario, el bootstrapper se inicia en modo pasivo, por lo que el usuario no debería tener que presionar nada.

<?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> <Bundle Name="My Company AutoUpdater" Version="1.0.11" Manufacturer="My Company" UpgradeCode="--GUID--"> <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense"> <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" LicenseUrl="" LogoFile="logo.png" /> </BootstrapperApplicationRef> <Chain> <MsiPackage SourceFile="../App1/bin/Release/App1.msi" /> <MsiPackage SourceFile="../App2/bin/Release/App2.msi" /> </Chain> </Bundle> <Fragment> <Property Id="WixShellExecTarget" Value="[#C:/Program Files (x86)/My Company/App1.exe]" /> <Binary Id="MyCA" SourceFile="[#C:/Program Files (x86)/My Company/App1.exe]"/> <CustomAction Id="LaunchApplication" BinaryKey="MyCA" ExeCommand="-switch" Execute="deferred" Return="check" HideTarget="no" Impersonate="no" /> <InstallExecuteSequence> <Custom Action="LaunchApplication" After="InstallFiles" /> </InstallExecuteSequence> </Fragment> </Wix>


Tenía una serie de pasos. Recuerda que estaba ejecutando esto desde un bootstrapper, no un archivo MSI, por lo que la respuesta de levarius hubiera sido suficiente.

Básicamente, eliminé cualquiera de la lógica de lanzamiento que se publicó en la pregunta original y creé un nuevo paquete, cuya única funcionalidad era iniciar una aplicación (mediante una acción personalizada) y cuya ubicación se había guardado previamente en el registro: es decir, la aplicación que se ejecuta cuando encuentra que hay una actualización disponible, establece este elemento en el registro.

El paquete (denominado PostInstall a continuación) se ejecuta SOLAMENTE si uno de los otros paquetes se ha instalado anteriormente: se encontró con la existencia de una clave en el registro (establecida en el MSI de cada producto). Esto significa que ninguna aplicación se iniciará automáticamente después de que se haya completado una nueva instalación.

Lo siguiente es del paquete bootstrapper (WiX 3.6 en mi caso)

<!-- Determine what items are installed in the event of an upgrade--> <util:RegistrySearch Root="HKLM" Key="SOFTWARE/CompanyName" Value="ProductAInstalled" Variable="ProductAInstalled" Result="exists" Format="raw" /> <util:RegistrySearch Root="HKLM" Key="SOFTWARE/CompanyName" Value="ProductBInstalled" Variable="ProductBInstalled" Result="exists" Format="raw" /> <Chain> <!-- Package for .NET prerequisite. References a Package that is actually in the referenced WiX file WixNetFxExtension. --> <PackageGroupRef Id="NetFx40Web"/> <MsiPackage SourceFile="../SetupProductA/bin/Release/SetupProductA.msi" InstallCondition="(chkProductA) OR (ProductAInstalled)" /> <MsiPackage SourceFile="../SetupProductB/bin/Release/SetupProductB.msi" InstallCondition="(chkProductB) OR (ProductBInstalled)" /> <!-- Run PostInstall only if this was run as part of an upgrade. --> <!-- NB: This is the portion that kicks off the downloaded bootstrapper. --> <MsiPackage SourceFile="../PostInstall/bin/Release/PostInstall.msi" InstallCondition="(ProductAInstalled) OR (ProductBInstalled)" /> </Chain>


Use los consejos que se dan en el manual de WiX, Cómo: Ejecutar la aplicación instalada después de la configuración . Hay una extensión WiX incorporada que manejará esto por ti. Debería poder hacer referencia a la extensión de WiX Util, agregar el siguiente código a su proyecto (reemplazando el valor de la propiedad, por supuesto), y luego programar la acción para ejecutar:

<Property Id="WixShellExecTarget" Value="[#myapplication.exe]" /> <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />