WIX MSI -属性覆盖优先级



如有任何帮助,不胜感激。

我正在编写这个WIX安装程序,以获得MSI在我们的服务器上安装web应用程序。

在我的应用程序,我有这个属性- "WEBDIR"。我在后面的代码中使用这个属性作为目录Id。

我用三种方式设置这个属性。

  1. (方法'A')作为在安静模式下调用msiexec时传递的属性。[此处设置为C:Path1]如下所示:

    msiexec /quiet /i My.msi WEBDIR="C:Path1" /l*v InstallationLog.log
    
  2. (方法'B')从一个IniFileSearch。我在C: windows中有一个名为MySetup.ini的ini文件,其中关键的WebsitesDir解析值C:Path2。[此处设置为C:Path2]:

    <Property Id="WEBDIR">
        <IniFileSearch Id="WebsitesDirIni" Name="MySetup.ini" Section="InstallLocations" Key="WebsitesDir" Type="raw"/>
    </Property>
    
  3. (方法'C')使用默认的目录结构。[此处设置为C:Path3]如下:

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="WEBDIR" Name="Path3">
        </Directory>
    </Directory>
    

当前的工作方式如下:-当方法'A', 'B'和'C'都设置属性值时,B优先。-当只有方法'A'和'C'设置属性值时,'C'优先。

我想要的是能够将优先级顺序设置为'A'。如果'A',那么'B',否则'C'。

这可能吗?

不,这不可能。如果您想控制顺序,最好的方法是立即自定义操作。因为它需要设置安装程序属性,所以您的自定义操作必须接收安装句柄(建议使用win32 DLL)。

在正常情况下,安装程序将使用这个顺序:

  1. 命令行值初始化属性
  2. 目录行设置初始文件夹路径,覆盖命令行值。以后可以通过成本操作(CostFinalize)修改此路径。
  3. 搜索覆盖初始文件夹路径,但可能被成本操作覆盖。

最新更新