Wix Открытая веб-страница при удалении завершается
Я использую Wix3. Мне нужно открыть веб-страницу, когда пользователь удалит продукт.
Любые идеи, как это можно сделать?
Спасибо.
Ответы
Ответ 1
Здесь пример кода, который мы используем, мы фактически не устанавливаем URL-адрес во время компиляции, а обновляем свойства в пост-сборке MSI, поэтому это может показаться немного "запрограммированным". Мы используем CA WiXShellExec и имеем дополнительное условие, чтобы веб-страница отображалась только во время удаления, а не во время основного обновления.
<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>
Ответ 2
Добавьте эти элементы 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.
Ответ 3
Пример, предоставленный FireGiant Запуск Интернета, не работает для меня, но это вдохновляет меня на то, чтобы выпустить собственное решение, как показано ниже.
Условие НЕ установлено означает новую установку, а Установлено означает, что он запускается только при удалении.
<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" />
<InstallExecuteSequence>
<Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom>
</InstallExecuteSequence>
Ответ 4
Вот что я сделал для установки и удаления:
<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>