WiX:我如何在外部设置房产?

Mik*_*ras 9 installer windows-installer wix properties

在我的WiX安装程序中,我有一个UserID的属性,该属性被写入注册表项:

<Property Id='UserID' Value='123' />

<Directory Id='TARGETDIR' Name='SourceDir'>
    <Component Id='UserIDComponent' Guid='*'>
        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' 
                       Type='integer' Value='[UserID]' Name='UserID' />
    </Component>
Run Code Online (Sandbox Code Playgroud)

我想将该属性的值设置为即时下载我的安装程序的用户的用户ID.因此,当他们去下载时,我只会创建一个每个人都可以获得的基本MSI的副本,将UserID的值设置为下载文件的人的值,这就是他们下载的内容.它将是每个人都获得的相同安装包,但具有为其定制的属性.

但是,我似乎无法找到有关如何从外部源设置WiX MSI属性的任何资源.我怎样才能做到这一点?

mar*_*c_s 10

据我记忆,你确实可以从"外部"设置属性 - 属性名称必须在所有大写中被识别为公共属性(不要问我为什么......)然后你可以设置它是这样的:

msiexec /i C:\Example.msi PROPERTY=VALUE
Run Code Online (Sandbox Code Playgroud)

例如在你的情况下

msiexec /i C:\Example.msi USERID=somevalue
Run Code Online (Sandbox Code Playgroud)

有关使用MSIEXEC的命令行选项,请参阅MSDN文档