【问题标题】:WIX MSI - PROPERTY override precedenceWIX MSI - 属性覆盖优先级
【发布时间】:2011-10-25 03:46:27
【问题描述】:

任何帮助将不胜感激。

我正在编写此 WIX 安装程序以获取 MSI 以在我们的服务器上安装 Web 应用程序。

在我的应用程序中,我有这个属性 - “WEBDIR”。我稍后在我的代码中将此属性用作目录 ID。

我通过 3 种方式设置此属性。

  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'。

这可能吗?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

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

    一般情况下安装程序会使用这个命令:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2010-12-07
      相关资源
      最近更新 更多