我試圖添加一個啓動條件wix來檢查並查看系統上是否啓用HTTP激活。我創建了一個託管的自定義操作,根據是否啓用該操作將返回ActionResult.Failure
或ActionResult.Success
。Wix添加啓動條件
我的想法是,然後設置InstallExecuteSequence
在LaunchConditions
操作之前調用自定義操作,並在此基礎上生成產品條件。
有誰知道這是否可行?或者如果有更好的解決方案?
我試圖添加一個啓動條件wix來檢查並查看系統上是否啓用HTTP激活。我創建了一個託管的自定義操作,根據是否啓用該操作將返回ActionResult.Failure
或ActionResult.Success
。Wix添加啓動條件
我的想法是,然後設置InstallExecuteSequence
在LaunchConditions
操作之前調用自定義操作,並在此基礎上生成產品條件。
有誰知道這是否可行?或者如果有更好的解決方案?
我會說你的自定義動作應該設置一個特定的屬性,以防HTTP激活啓用。啓動條件將檢查該屬性是否已定義,並基於該條件讓安裝進一步進行或終止。
我的意思是沒有必要讓你的CA返回ActionResult.Failure失敗。只需設置屬性並讓LaunchConditions執行其工作即可。
我假設通過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。
同意。雖然失敗的操作將滿足隱含的要求(有條件地中止安裝程序),但它不會以某種方式讓安裝人員知道如何解決問題。在啓動條件中設置屬性和條件或輸入包含消息的19「錯誤」CA更好。 – 2011-02-13 15:56:51