首先,讓我通過說私有屬性來定義我的意思。在Wix Installer中定義私有屬性
<Property Id="CHECKREGISTRY">
<RegistrySearch Id="CheckRegistryKey"
Root="HKLM"
Key="SOFTWARE\Foo"
Name="Bar"
Type="raw" />
</Property>
<Condition Message="You don't have the required permission to install this tool.">
<![CDATA[Installed OR CHECKREGISTRY]]>
</Condition>
但問題是,你可以通過簡單地運行這樣的腳本繞過這個檢查:
msiexec.exe /i FooInstaller.msi /quiet CHECKREGISTRY="#1"
,並且是針對非常正常情況下,屬性還可以使用腳本,例如如下設置第一個想法,你應該有註冊表鍵能夠做你想做的事情。
如您所見,私有財產 - 如果存在 - 將阻止這種情況發生,並允許只能從MSI安裝程序本身進行設置。
我正在考慮去CustomAction
的路線,但是對於一個非常簡單的事情來說,它太複雜了。有沒有簡單的解決方案來解決這個問題,或者我們如何能夠首先定義私有屬性?
謝謝。至少,它會阻止它們成爲其他腳本和安裝程序的一部分。我很高興我們有這個選擇。非常感謝! – Tarik
現在的問題是:「錯誤CNDL0012:Property/@ Id屬性的值'checkRegistry'不能包含小寫字符,因爲這是一個搜索屬性,它也必須是一個公共屬性,這意味着Property/@ Id值必須完全大寫。(32) 「 – Tarik
沒錯。 '但是,你不能使用AppSearch來設置私有屬性。' –