簡體   English   中英

WIX條件僅在安裝不起作用時

[英]WIX condition only on Install not working

我的產品標簽中包含以下內容:

<Property Id="LICENSEKEY" Admin="yes" Hidden="no">
  <RegistrySearch Id="RememberLicenseKey" Root="HKLM" Key="SOFTWARE\MyApp\key1\Settings" Name="LICENSEKEY" Type="raw"></RegistrySearch>
</Property>

<Condition Message="License key is required to proceed">LICENSEKEY AND NOT Installed</Condition>

我要做的是將許可證密鑰作為命令行參數傳遞給msiexec,然后在注冊表中進行設置。 如果密鑰沒有通過,我想取消安裝。 因此,此檢查僅需要在安裝時運行。 但是,我添加的條件在安裝和卸載時都會彈出。 似乎無法弄清楚我在做什么錯。

編輯:我測試以下條件,它似乎在安裝和卸載上都顯示該消息:

<Condition Message="License key is required to proceed">NOT Installed</Condition>

對於消息Condition時,條件計算為false,這意味着條件成立元素將被顯示出來。

WiX條件文檔的“消息”屬性描述中對此進行了說明:

將值設置為在條件失敗並且必須終止安裝時顯示的文本。

要解決此問題,只需將Condition中的邏輯運算符更改為LICENSEKEY OR Installed

這是一個較晚的答案,但是希望對以后發現此問題的訪客有幫助。

您可能需要澄清您的要求。 該WiX源會搜索密鑰,是否需要在命令行中傳遞它,或者您將取消安裝(如您的帖子所述),或者如果該注冊表搜索在注冊表中找到它,可以使用它嗎? 當前,您的注冊表搜索似乎覆蓋了您在命令行中傳遞的所有內容,包括將其設置為null,因此請使用詳細的日志進行檢查。

另外,我見過或使用過的所有啟動條件示例在實際條件的文本周圍都有一個CDATA-這可能是問題的一部分。

我假設您在命令行或注冊表中允許該鍵。 因此,您的注冊表搜索應該是另一個屬性名稱,我們將其稱為REGKEY,這樣就不會將您傳遞的LICENSEKEY設置為null。 然后,在搜索之后立即具有set屬性(類型51)自定義操作,該搜索將LICENSEKEY設置為REGKEY,條件為-Not LICENSEKEY-,因此只有在未在命令行上傳遞LICENSEKEY的情況下,才將LICENSEKEY設置為REGKEY。 因此,如果在命令行中將其傳遞,則將使用它,否則將使用注冊表之一。 此時,LICENSEKEY的條件應可以正常運行,作為啟動條件。 在內部,通常會在WiX MSI中立即在找到注冊表項的AppSearch之后進行啟動條件檢查,因此您需要在啟動條件檢查之前設置LICENSEKEY。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM