Wix Open web page when uninstall completes
Asked Answered
T

4

15

I'm using Wix3. I need to open a web page when the user uninstalls the product.
Any ideas how it can be done?

Thanks.

Tomcat answered 30/11, 2009 at 12:58 Comment(0)
W
21

Here's a sample of the code we use, we don't actually set the URL at compile time, but update properties in the MSI post-build so this might seem a little "over engineered". We use the WiXShellExec CA and have an additional condition so that the webpage is only displayed during uninstall, and not during a major upgrade.

<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>
Wishful answered 30/11, 2009 at 21:59 Comment(0)
B
5

Add these XML elements somewhere under your <Product> element:

  <CustomAction Id="LaunchBrowser"
        ExeCommand="explorer.exe http://www.google.com"
        Directory="INSTALLDIR"
        Return="asyncNoWait" >
     REMOVE="ALL"
  </CustomAction>

  <InstallExecuteSequence>
     <Custom Action="LaunchBrowser" After="InstallValidate"/>
  </InstallExecuteSequence>

The REMOVE="ALL" condition will make sure the custom action is executed only if the product is being completely removed.

The After="InstallValidate" makes sure that the custom action is executed right after the REMOVE property value becomes known.

Behre answered 30/11, 2009 at 15:29 Comment(4)
This solution is actually better than the one that got accepted because it will work with PushButtons. The only thing I'd advise is putting the &quot; marks around the URL.Evaporite
This is missing "AND NOT UPGRADINGPRODUCTCODE".Coen
If you want to use the systems default browser (chrome, firefox, etc) you could use ExeCommand="cmd.exe /c start https://google.com" instead.Mcdonald
@PhonicUK: for me the shown solution already uses the default browser, it's chrome on my system. Note the difference between explorer.exe (the file manager) and iexplore.exe (the IE browser).Behre
P
1

The example provided by FireGiant Launch the Internet doesn't work for me but it inspire me to come out my own solution as below.

The condition NOT Installed mean new installation while Installed means it only trigger when uninstall.

<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" />
<InstallExecuteSequence>
    <Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom>
</InstallExecuteSequence>
Phlyctena answered 3/2, 2018 at 9:47 Comment(0)
D
1

Here is what I did for both install and uninstall:

<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>
Dashtilut answered 3/5, 2019 at 15:19 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.