在首次安装时根据MSI调用自定义WiX操作

时间:2012-02-08 13:48:06

标签: wix windows-installer

我正在尝试在我的产品安装期间调用依赖的MSI设置(存储在二进制表中)(例如,在InstallExecuteSquence中的InstallFiles之后),在我的WiX代码中使用自定义操作“运行可执行文件”(我使用WiX v3.5.2519) .0)像这样:

<Upgrade Id="{CB60C307-588D-47F5-87DD-7FDAE12434B0}">
    <UpgradeVersion Property="OTHERMSI"
                    Minimum="1.0.0"
                    Maximum="1.1.0"
                    IncludeMinimum="yes"
                    IncludeMaximum="yes"
                    OnlyDetect="yes"/>
</Upgrade>

<CustomAction Id="INSTALL_OTHERMSI"
              Impersonate="yes"
              Return="check"
              Execute="immediate"
              BinaryKey="Other.msi"
              ExeCommand=""/>

<Binary Id="Other.msi"
        SourceFile="c:\temp\sources\Other.msi"/>

<InstallExecuteSequence>
  <Custom Action="INSTALL_OTHERMSI"
          After="InstallFiles">OTHERMSI="" AND NOT PATCH AND NOT Installed</Custom>
</InstallExecuteSequence>

当我运行我的MSI文件时,它会一直走到自定义操作“INSTALL_OTHERMSI”。但它始终失败并显示错误消息:

  

无法运行此安装所需的程序。

我不想使用引导程序,我想要纯MSI。我见过类似的安装(比如JetBrains ReSharper,它在安装过程中安装Visual Studio 2010 SP1)已经完成了这个工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

首先,Windows Installer不允许同时运行两个安装。因此这种方法不起作用。你需要的是MSI链接。您可以使用EmbeddedChainer元素