2009-11-30 16 views

Odpowiedz

18

Oto przykład kodu, którego używamy, w rzeczywistości nie ustawiamy adresu URL w czasie kompilacji, ale aktualizujemy właściwości w post-build MSI, więc może się to wydawać nieco "nadrobione". Używamy WiXShellExec CA i mamy dodatkowy warunek, aby strona była wyświetlana tylko podczas odinstalowywania, a nie podczas ważnej aktualizacji.

<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

Zadziałał jak urok, dzięki! –

+0

Podczas pełnej deinstalacji nie jest Remove = "ALL"? –

4

Dodaj te elementy XML gdzieś pod elementu <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> 

Warunkiem REMOVE="ALL" będzie upewnić się, że akcja niestandardowa jest wykonywana tylko wtedy, gdy produkt jest całkowicie usunięty.

After="InstallValidate" zapewnia, że ​​akcja niestandardowa zostanie wykonana zaraz po poznaniu wartości REMOVE property.

+1

To rozwiązanie jest lepsze niż to, które zostało zaakceptowane, ponieważ będzie działać z 'PushButton's. Jedyne, co radziłbym, to umieszczenie znaczników '"' wokół adresu URL. –

+0

Brakuje "AND NOT UPGRADINGPRODUCTCODE". – seguso

0

Przykład dostarczone przez FireGiant Launch the Internet nie działa dla mnie, ale inspirują mnie wyjdzie moje własne rozwiązanie jak poniżej.

Warunkiem Niezainstalowany oznaczać nową instalację podczas zainstalowana oznacza to tylko spustu podczas odinstalowywania.

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