我们的wix安装程序的最后一步是在命令提示符下运行SQLUpgrade.exe以保持更新数据库架构。
<CustomAction Id="SQLPackageUpgrade" ExeCommand="start [SQLPackageLOCATION]SqlPackage.exe /Action:Publish /SourceFile:"[SQLPackageLOCATION]XXX.dacpac" /TargetConnectionString:"Server=[DBSERVER];Database=[DBNAME]"" Directory="SQLPackageLOCATION" Execute="deferred" Return="asyncNoWait"/>
使用上面的代码,命令提示符会在命令退出时立即消失。 如果执行失败,我们将无法在命令提示符中看到错误消息。我们尝试将结果移植到txt文件,但它没有记录任何内容。 是否有一种简单的方法可以让客户打开此命令提示符,以便他们有机会看到错误消息?谢谢!
答案 0 :(得分:1)
建议不要在自定义操作中直接调用EXE,而是建议使用Quiet Execution custom action。
好处是:
您已将自定义操作正确安排为延迟 - 必须延迟更改目标系统的自定义操作。
最后,但并非最不重要:您应该考虑回滚自定义操作并适当地安排它。每个延迟CA都应具有相应的回滚CA - 否则如果安装失败并回滚,则可能使系统处于未定义状态。
答案 1 :(得分:0)
我认为在这种情况下,您需要更改自定义操作的两个属性:
Execute="immediate" Return="check"
检查意味着你想要结果,所以如果它失败了它可能会停止,但至少你应该能看到它。
您也可以尝试:
Return="asyncWait"
希望这有帮助。