2017-01-10 79 views
0

我试图启动软件我安装后使用一些参数安装后执行初始化任务。我只想在第一次安装之后而不是在升级之后启动自定义操作。Wix推出安装软件后第一次安装,而不是升级后

以下代码在第一次安装和升级后启动custum操作。

<CustomAction Id="MyAction" 
    Directory="TARGETDIR" 
    ExeCommand="[INSTALL_ROOT]MySoft.exe myarg" 
    Execute="immediate" 
    Return="ignore" 
    Impersonate="yes" /> 
<InstallExecuteSequence> 
    <Custom Action="MyAction" After='InstallFinalize'>(NOT Installed) AND (NOT UPGRADINGPRODUCTCODE) </Custom> 
</InstallExecuteSequence> 

什么问题?

回答

2

运行MSI并使用msiexec/I [msi]/l * vx [日志文件的路径]创建一个日志,并查看您的自定义操作何时被调用以及日志对它的说明。

您知道程序是否因为(例如)需要提升权限而启动并崩溃?你假设安装有问题,因为大概你看不到程序运行的结果,但是如果它崩溃了,你会怎么知道?日志会告诉你它是否试图运行它,并注意说return = ignore意味着即使它失败,安装也会继续运行。

如果“升级后”意味着这是升级MSI,那么您的条件有误,因为在升级时设置了UPGRADINGPRODUCTCODE,而不是在产品升级时设置。如果这是升级设置,则需要WIX_UPGRADE_DETECTED作为条件。

+0

Thx! WIX_UPGRADE_DETECTED是我所需要的。对于日志的提示,可以使用thanx进行调试。这[另一篇文章](http://stackoverflow.com/questions/18531272/how-do-i-distinguish-between-a-normal-install-and-an-upgrade-in-wix)也非常有用,以识别不同的场景。 – skuallpa

相关问题