WIX:如果MSI具有命令行参数,则在安装时覆盖IniFileSearch

时间:2011-09-13 02:29:55

标签: wix windows-installer

在我的WIX安装项目中,我正在从INI文件中读取一些属性。

如果任何Property值作为命令行参数传递,是否有办法在安装期间覆盖IniFileSearch。 (我试图这样做,以便它也适用于静默安装。)

代码段:

<Property Id="WEBDIR" >
   <IniFileSearch Id="WebsitesDirIni" Name="Setup.ini" Section="InstallLocations" Key="WebsitesDir" Type="raw"/>
</Property>

我想要的是,如果我按如下所示执行msi,它接受命令行参数给出的值,而不是在ini文件中查找值。

msiexec /i install.msi WEBDIR=C:\MyOverriddenPath

2 个答案:

答案 0 :(得分:1)

INI文件搜索只能在Windows目录中搜索。因此,对于您的方案,您可以尝试使用此线程中提到的自定义操作: Get INI file value with WiX

这样,您只需使用从命令行设置的属性来调整自定义操作。

答案 1 :(得分:1)

您的示例将WEBDIR设置为命令行值,然后通过ini文件值替换

您可以使用不同的命令行属性名称并将WEBDIR设置为该值(如果已定义),从而获得所需的结果。即。

    <SetProperty Id="WEBDIR" After="AppSearch" Value="[DIR]">
        DIR
    </SetProperty>

请注意,这是对现有代码的补充。然后你可以打电话:

msiexec /i install.msi DIR=C:\MyOverriddenPath

将覆盖ini文件中定义的WEBDIR属性。