2009-11-30 14 views

Respuesta

18

Aquí hay un ejemplo del código que usamos, en realidad no establecemos la URL en tiempo de compilación, pero actualizamos las propiedades en la compilación posterior de MSI, por lo que esto podría parecer un poco "sobre ingeniería". Usamos la CA de WiXShellExec y tenemos una condición adicional para que la página web solo se muestre durante la desinstalación y no durante una actualización importante.

<Fragment> 
    <Property Id="MyURL"><![CDATA[http://www.blah.blah.blah/]]></Property> 
    <CustomAction Id="SetOpenURL" Property="WixShellExecTarget" Value="[MyURL]" /> 
    <CustomAction Id="OpenURL" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" /> 

    <InstallExecuteSequence> 
     <!-- Launch webpage during full uninstall, but not upgrade --> 
     <Custom Action="SetOpenURL" After="InstallFinalize"><![CDATA[REMOVE ~= "ALL" AND NOT UPGRADINGPRODUCTCODE]]></Custom> 
     <Custom Action="OpenURL" After="SetOpenURL"><![CDATA[REMOVE ~= "ALL" AND NOT UPGRADINGPRODUCTCODE]]></Custom> 
    </InstallExecuteSequence> 
</Fragment> 
+0

Funcionó como el encanto, gracias! –

+0

Durante la desinstalación completa, ¿no es Remove = "ALL"? –

4

Añadir estos elementos XML en algún lugar bajo su elemento <Product>:

<CustomAction Id="LaunchBrowser" 
     ExeCommand="explorer.exe http://www.google.com" 
     Directory="INSTALLDIR" 
     Return="asyncNoWait" > 
    REMOVE="ALL" 
    </CustomAction> 

    <InstallExecuteSequence> 
    <Custom Action="LaunchBrowser" After="InstallValidate"/> 
    </InstallExecuteSequence> 

La condición REMOVE="ALL" se asegurará de que se ejecute la acción personalizada sólo si el producto está siendo eliminado por completo.

El After="InstallValidate" se asegura de que se ejecuta la acción personalizada justo después del valor REMOVE property es conocida.

+1

Esta solución es en realidad mejor que la que fue aceptada porque funcionará con 'PushButton's. Lo único que aconsejo es poner las marcas '"' alrededor de la URL. –

+0

Falta "Y NO ACTUALIZAR EL CÓDIGO DE PRODUCTO". – seguso

0

El ejemplo proporcionado por FireGiant Launch the Internet no funciona para mí, pero a inspirar a que salga mi propia solución de la siguiente manera.

La condición NO Instalado significa nueva instalación mientras Instalado significa que sólo se activan cuando desinstalación.

<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" /> 
<InstallExecuteSequence> 
    <Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom> 
</InstallExecuteSequence> 
Cuestiones relacionadas