2011-02-11 68 views
1

我試圖添加一個啓動條件wix來檢查並查看系統上是否啓用HTTP激活。我創建了一個託管的自定義操作,根據是否啓用該操作將返回ActionResult.FailureActionResult.SuccessWix添加啓動條件

我的想法是,然後設置InstallExecuteSequenceLaunchConditions操作之前調用自定義操作,並在此基礎上生成產品條件。

有誰知道這是否可行?或者如果有更好的解決方案?

回答

4

我會說你的自定義動作應該設置一個特定的屬性,以防HTTP激活啓用。啓動條件將檢查該屬性是否已定義,並基於該條件讓安裝進一步進行或終止。

我的意思是沒有必要讓你的CA返回ActionResult.Failure失敗。只需設置屬性並讓LaunchConditions執行其工作即可。

+0

同意。雖然失敗的操作將滿足隱含的要求(有條件地中止安裝程序),但它不會以某種方式讓安裝人員知道如何解決問題。在啓動條件中設置屬性和條件或輸入包含消息的19「錯誤」CA更好。 – 2011-02-13 15:56:51

0

我假設通過HTTP激活你的意思是Windows Communication Foundation HTTP激活。有了這說...

而不是一個自定義操作不能使用註冊表項來設置屬性描述嚴?例如,對於IIS6元數據庫兼容性我使用:

<Property Id="IIS_METABASE_COMPAT"> 
    <RegistrySearch Id="CheckIisMetabase" 
        Root="HKLM" 
        Key="SOFTWARE\Microsoft\InetStp\Components" 
        Name="Metabase" 
        Type="raw" 
        Win64="no" /> 
</Property> 

而對於啓動條件(以上是在啓動條件的幾個屬性中的一個):

<Condition Message="IIS6 or IIS 7 is required. If you are running IIS7 the IIS 6 Metabase Compatibility Feature must be installed."> 
    <![CDATA[IISMAJORVERSION="#6" OR (IISMAJORVERSION="#7" AND (IIS_METABASE_COMPAT OR IIS_METABASE_COMPAT_X64))]]> 
</Condition> 

我發現了一個鍵在: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation\HTTPActivation這可能會或可能不會有用於此目的。在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup\Windows Communication Foundation還有一個名爲InstallSuccess的REG_DWORD可能很有用。

我找不到這些文檔,但我已經安裝了兩者,我的InstallSuccess的值REG_DWORD是(1),並且存在關鍵的HTTPActivation。