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