Wix Открыть веб-страницу после завершения удаления - PullRequest
14 голосов
/ 30 ноября 2009

Я использую Wix3. Мне нужно открыть веб-страницу, когда пользователь удаляет продукт.
Есть идеи как это можно сделать?

Спасибо.

Ответы [ 4 ]

20 голосов
/ 01 декабря 2009

Вот пример кода, который мы используем, мы на самом деле не устанавливаем URL во время компиляции, но обновляем свойства в MSI post-build, так что это может показаться немного «слишком сложным». Мы используем WiXShellExec CA и имеем дополнительное условие, чтобы веб-страница отображалась только при удалении, а не при серьезном обновлении.

<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>
4 голосов
/ 30 ноября 2009

Добавьте эти элементы XML где-нибудь под элементом <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>

Условие REMOVE="ALL" обеспечит выполнение пользовательского действия только в том случае, если продукт полностью удаляется.

After="InstallValidate" обеспечивает выполнение пользовательского действия сразу после того, как значение REMOVE становится известным.

0 голосов
/ 03 мая 2019

Вот что я сделал для установки и удаления:

<Product>

...

<CustomAction Id="LaunchBrowserInstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_install/" />

    <CustomAction Id="LaunchBrowserUninstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_uninstall/" />

    <InstallExecuteSequence>
        <Custom Action="LaunchBrowserInstall" After="InstallFinalize">NOT Installed AND NOT REMOVE</Custom>
        <Custom Action="LaunchBrowserUninstall" After="InstallFinalize">REMOVE ~= "ALL"</Custom>
    </InstallExecuteSequence>

...

</Product>
0 голосов
/ 03 февраля 2018

Пример, предоставленный FireGiant Запуск интернета не работает для меня, но вдохновляет меня предложить собственное решение, как показано ниже.

Условие НЕ установлено означает новую установку, в то время как Установлено означает, что срабатывает только при удалении.

<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" />
<InstallExecuteSequence>
    <Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom>
</InstallExecuteSequence>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...