2009-11-30 19 views

risposta

18

Ecco un esempio del codice che usiamo, in realtà non impostiamo l'URL in fase di compilazione, ma aggiorniamo le proprietà nel post-build MSI in modo che questo possa sembrare un po '"sovradimensionato". Utilizziamo la CA WiXShellExec e disponiamo di una condizione aggiuntiva in modo che la pagina Web venga visualizzata solo durante la disinstallazione e non durante un aggiornamento principale.

<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

Ha funzionato come un incanto, grazie! –

+0

Durante la disinstallazione completa non è Remove = "ALL"? –

4

aggiungere questi elementi XML da qualche parte sotto il vostro 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 condizione REMOVE="ALL" farà in modo che si esegue l'azione personalizzata solo se il prodotto è stato completamente rimosso.

Il After="InstallValidate" si assicura che l'azione personalizzata venga eseguita subito dopo che il valore REMOVE property diventa noto.

+1

Questa soluzione è effettivamente migliore di quella che è stata accettata perché funzionerà con 'PushButton's. L'unica cosa che consiglierei è mettere i '"' segni intorno all'URL. –

+0

Manca "AND NOT UPGRADINGPRODUCTCODE". – seguso

0

L'esempio fornito da FireGiant Launch the Internet non funziona per me, ma ispirano me venire fuori la mia soluzione, come di seguito.

La condizione NON installata significa nuova installazione mentre Installato significa che innesca solo quando disinstallazione.

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