我的目标是创建一个简单的 msi 包,它除了运行与 .msi 位于同一文件夹中的 .bat 脚本之外什么都不做。我不需要在目标机器上复制任何文件或创建文件夹等。我尝试将 Wix 3.5 与 vb-script 一起使用,它将运行我需要的 .bat。vb 代码本身运行良好,但在 .msi 内部它以一种奇怪的方式运行 - 我可以看到一个带有“路径”的消息框,我没有错误,但脚本不执行 .bat。
<Property Id="Launch">
<![CDATA[
Function Main()
Set shell = CreateObject("WSCript.shell")
path = Session.Property("SourceDir")
MsgBox path
shell.Run path & "sample.bat", 0, False
Set shell = Nothing
Main = 1
End Function
]]>
</Property>
<CustomAction Id="Die"
VBScriptCall="Main"
Property="Launch"
Return="check"
Impersonate="yes"/>
<InstallExecuteSequence>
<Custom Action='Die' Before='RegisterProduct'> NOT Installed </Custom>
</InstallExecuteSequence>
我还尝试了另一种方法:
<Property Id='CMD'>cmd.exe</Property>
<CustomAction Id='LaunchFile' Property='CMD' ExeCommand='[SourceDir]sample.bat' Return='check' Impersonate='yes'/>
但是,如果我将“notepad.exe”放在属性中 - 一切都很好,当我使用“cmd.exe”时,控制台会在不执行我的 sample.bat 的情况下打开和关闭。如果是“notepad.exe”,则显示“sample.bat”的内容。你们能帮我解决这个问题吗?