WiX:安装MS VC x64可再发行组件作为MSI安装的一部分

时间:2012-07-02 01:07:20

标签: wix windows-installer wix3.5

我正在使用WIX创建一个MSI,它需要特定版本的MS VC 2008 x64 Redistributable。 MSI也适用于基于x64的产品。

对于我需要的64位版本的可再发行组件,我有Microsoft vcredist_setup.exe(我将其重命名为vc90redist_x64.exe以供我自己参考)。

以下是我用来定义二进制文件的WiX XML:

<Binary Id='_VC_X64_REDIST_' SourceFile='redist\vc90redist_x64.exe' />

custom action

<CustomAction Id='_INSTALL_REDIST_'
              BinaryKey='_VC_X64_REDIST_'
              ExeCommand='/q /l c:\temp\vc.log'
              Execute='deferred'
              Return='asyncWait' />

注意:我添加了'/ l c:\ temp \ _vc.log'以查看EXE文件是否到达了尝试安装的程度。

注意:我尝试过Return='check'Execute='Immediate'

并调用自定义操作..

<InstallExecuteSequence>
    <Custom Action='_INSTALL_REDIST_' After='InstallFiles'>
        NOT Installed
    </Custom>
</InstallExecuteSequence>

注意:我尝试过各种After / Before值,而上面的值似乎在日志文件中给出了最好的结果!但仍然没有安装。

当我运行安装MSI文件时,我的产品已安装,但可再发行组件没有安装(即C:\temp\vc.txt没有创建。如果我之后手动运行可再发行组件,它会提示我安装;那里在“删除程序”列表中没有条目。)

使用上述设置,使用

运行时会得到以下内容
'msiexec /i my.msi /l*v log.txt'

以下是日志的摘录(向右滚动以查看完整的行):

Action ended 10:54:27: InstallFiles. Return value 1.
MSI (s) (64:E8) [10:54:27:655]: Doing action: _INSTALL_REDIST_
MSI (s) (64:E8) [10:54:27:655]: Note: 1: 2205 2:  3: ActionText
Action start 10:54:27: _INSTALL_REDIST_.
Action ended 10:54:27: _INSTALL_REDIST_. Return value 1.
...
MSI (s) (64:E8) [10:54:50:905]: Executing op: ActionStart(Name=_INSTALL_REDIST_,,)
MSI (s) (64:E8) [10:54:51:233]: Executing op: CustomActionSchedule(Action=_INSTALL_REDIST_,ActionType=1154,Source=BinaryData,Target=/q /l c:\temp\vc.log,)
...
MSI (s) (64:E8) [10:54:51:889]: Executing op: ActionStart(Name=PublishFeatures,Description=Publishing Product Features,Template=Feature: [1])
MSI (s) (64:E8) [10:54:51:889]: Executing op: FeaturePublish(Feature=Complete,,Absent=2,Component=<VERY LONG BINARY ASCII LOOKING THING>
   ...  1: _INSTALL_REDIST_ 2: 1631
...

这是日志中最后一次提到_INSTALL_REDIST_。

如何解决此问题?

(我搜索了Stack Overflow和大多数WiX引用和博客,但我还没有成功实现这一目标)

0 个答案:

没有答案