从WIX中运行批处理文件的脚本

时间:2013-06-17 13:31:48

标签: wix windows-installer wix3.5

我实现了wix来生成一些msi。我想维护.bat文件(包含在这个wix项目中)以包含一些工作要做(并通过一些自定义操作激活) 我将.bet添加到VS2010的wix项目中。

我的问题是

  1. 如何将其实际包装在目标机器上的msi中,脚本可以运行?
  2. 如何在自定义部分元素
  3. 中实际引用该嵌入式批处理文件

2 个答案:

答案 0 :(得分:9)

这可能不是您正在寻找的答案,但我强烈建议您不要这样做。从MSI包中运行批处理文件有许多缺点,有一天会拍你:

  • 防病毒软件可能阻止执行
  • 对于任何延迟的自定义操作(更改目标系统状态的操作),您必须创建回滚操作,对于可能包含多个不同性质步骤的批处理文件,可能会困难得多
  • 你没有进展(我怀疑这对批处理脚本来说是完全可能的)

相反,我鼓励您执行以下操作:

  • 分析您的批处理脚本并列出它对目标系统所做的确切事情
  • 查看标准的Windows Installer功能和WiX扩展程序以查看开箱即用的功能
  • 将您的安装设计为尽可能使用标准功能并尽可能少地使用自定义操作
  • 如果您仍需要自定义操作,请坚持使用自定义操作,并确保延迟操作存在回滚操作

答案 1 :(得分:3)

您正在寻找我认为的type 18 custom action

The executable is generated from a file installed with the application. The 
Source field of the CustomAction table contains a key to the File table. The 
location of the custom action code is determined by the resolution of the target 
path for this file; therefore this custom action must be called after the file 
has been installed and before it is removed.

CustomAction element具有ExeCommand属性,仅适用于此类场合。它看起来像这样:

<CustomAction Id="ExecuteMyBatchFile" 
              FileKey="[#FileKey]" 
              ExeCommand="Arguments passed to batch file"
              Execute="deferred"/>

当然,这是假设msi安装了批处理文件。