在 Wix Installer 中定义私有属性

Tar*_*rik 4 windows-installer wix

首先,让我定义一下私有财产的含义。通常,可以使用脚本设置属性,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)

但问题是,您可以通过简单地运行如下脚本来绕过此检查:

msiexec.exe /i FooInstaller.msi /quiet CHECKREGISTRY="#1"
Run Code Online (Sandbox Code Playgroud)

这违背了您应该拥有注册表项才能做您想做的事情的第一个想法。

如您所见,私有属性(如果存在)将阻止这种情况发生,并允许仅从 MSI 安装程序本身进行设置。

我本来想走CustomAction路线,但是对于一个很简单的事情来说,却过于复杂了。这个问题有什么简单的解决方案吗?或者我们如何首先定义私有属性?

Bob*_*son 5

您可以通过使用小写字母命名来创建私有属性。公共属性全部大写。

但是,您不能用于AppSearch设置私有属性。

请记住,MSI 数据库可以被检查,因此没有真正的安全性。最好的方法是使用自定义操作来进行混淆。

  • 正确的。“但是,您不能使用 AppSearch 设置私有属性。” (2认同)
  • “AppSearch”是所有 MSI 搜索的标准操作。 (2认同)