Wix Open web page when uninstall completes

后端 未结 4 1829
夕颜
夕颜 2020-12-14 20:20

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.

相关标签:
4条回答
  • 2020-12-14 20:48

    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>
    
    0 讨论(0)
  • 2020-12-14 21:03

    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>
    
    0 讨论(0)
  • 2020-12-14 21:07

    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>
    
    0 讨论(0)
  • 2020-12-14 21:10

    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.

    0 讨论(0)
提交回复
热议问题