在Wix安装程序中定义私有属性
首先,让我来定义我所说的私有财产的含义。通常,可以使用脚本设置属性,如下所示:在Wix安装程序中定义私有属性,wix,windows-installer,Wix,Windows Installer,首先,让我来定义我所说的私有财产的含义。通常,可以使用脚本设置属性,如下所示: <Property Id="CHECKREGISTRY"> <RegistrySearch Id="CheckRegistryKey" Root="HKLM" Key="SOFTWARE\Foo" Name="Bar"
<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>
这与第一个想法背道而驰,即您应该拥有注册表项,以便能够做您想做的事情
如您所见,私有属性(如果存在)将阻止这种情况,并允许仅从MSI安装程序本身中进行设置
我本来想转到
CustomAction
路线,但对于一件非常简单的事情来说,它太复杂了。这个问题有没有简单的解决方案,或者我们如何首先定义私有属性?根据定义,仅由大写字母组成的属性是公共的。要使其私有化,请使用一些小写字符
如果您担心在命令行中设置公共属性,只需在AppSearch之前将其显式设置为空值即可 您可以通过使用小写字母命名来创建私有属性。公共属性都是大写的 但是,不能使用
AppSearch
设置私有属性
请记住,MSI数据库可以检查,因此没有真正的安全性。您最好使用自定义操作进行模糊处理。谢谢。至少,这将防止它们成为其他脚本和安装程序的一部分。我很高兴我们有这个选择。谢谢!现在的问题是:“错误CNDL0012:Property/@Id属性的值‘checkRegistry’不能包含小写字符。因为这是一个搜索属性,所以它也必须是一个公共属性。这意味着Property/@Id值必须完全为大写。(32)”正确
但是,您不能使用AppSearch设置私有属性。
我不知道您说的AppSearch是指RegistrySearch。我对MSI安装程序还比较陌生。谢谢。AppSearch
是所有MSI搜索的标准操作。感谢分享您的源代码+1.
msiexec.exe /i FooInstaller.msi /quiet CHECKREGISTRY="#1"