我正在使用WPF项目并创建了一个部署项目。我能够让安装程序运行并且运行正常。现在在应用程序的提交阶段,我想触发另一个安装。我尝试创建自定义操作并在customactiondata字段中添加以下命令。
msiexec.exe / i“[SOURCEDIR] \ App.msi”/ qb
当我运行应用程序时,我会看到一个显示MSI选项的帮助窗口。知道没有触发安装程序的原因。
- 巴拉
答案 0 :(得分:4)
当你说你想在安装后安装App.msi之后,它会让我问你是否控制了这个App.msi,或者你是否正在使用别人的安装程序。我之所以想知道这是因为如果您控制了App.msi,我建议将其更改为合并模块并将此合并模块的输出添加到安装程序项目中。如果您是App.msi的作者,这将是最简单的攻击计划。但是,如果你只是想在你的msi完成后安装其他人的msi,那么你就是在正确的轨道上。基本上你获得MSI选项对话框的原因是因为某些内容格式不正确。我的猜测是你的自定义操作没有正确调用MSIEXEC.EXE,从而导致弹出帮助选项对话框。没有你的源代码,我无法确定具体是什么错误,我只能向你展示一个如何让它工作的例子。我的解决方案如下:
首先,让我们看看解决方案,如果你控制App.msi,并可以将其转换为合并模块。以下是执行此操作的步骤:
现在,对于您无法控制App.msi的情况,您需要执行以下操作:
/OtherMSIPath="[TARGETDIR]\App.msi"
图1:
Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
stateSaver.Add("OtherMSIPath", Context.Parameters("OtherMSIPath"))
End Sub
Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary)
MyBase.Commit(savedState)
System.Diagnostics.Process.Start("MSIEXEC.EXE", "/i """ & savedState.Item("OtherMSIPath").ToString & """ /qb")
End Sub
我已将此问题的源代码添加到Google Code的here以供您下载。您可以使用subversion client结帐此示例{{3}}。
我希望这有帮助,