2009-11-30 68 views

回答

18

下面是我們使用的代碼示例,我們並沒有在編譯時實際設置URL,但更新了MSI後期構建中的屬性,因此這可能看起來有些「過度設計」。我們使用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> 
+0

像魅力一樣工作,謝謝! –

+0

在完全卸載期間是不是Remove =「ALL」? –

4

添加這些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 property值已知之後立即執行自定義操作。

+1

這個解決方案實際上比那些被接受的解決方案更好,因爲它可以與'PushButton'一起使用。我建議的唯一的事情是在網址周圍加上'"'標記。 –

+0

缺少「不升級產品代碼」。 – seguso

0

由FireGiant Launch the Internet提供的例子不爲我工作,但它激勵我下面出來我自己的解決方案。

沒有安裝條件意味着新的安裝,同時安裝意味着它只會觸發時卸載。

<CustomAction Id="LaunchBrowser" Directory="INSTALLDIR" Return="asyncNoWait" ExeCommand="explorer.exe http://www.google.com/" /> 
<InstallExecuteSequence> 
    <Custom Action="LaunchBrowser" After="InstallFinalize">Installed</Custom> 
</InstallExecuteSequence>