我有一个msi。在其中我有几个配置文件(a.config
等)和exes(jux.exe
等)。
在我的msi中,我创建了一个自定义操作 - 提交其中一个exe(jux.exe)。我将installerclass
设为假。
想法是让msi在安装后立即调用jux.exe
。
jux
可以启动,直到它尝试验证某些文件(jex.exe
,jax.exe
等)的存在并读取msi内的文件(a.config
,b.config
等。似乎jux.exe
无法找到文件。
我不应该使用提交吗?想法?
答案 0 :(得分:1)
它最有可能失败,因为您正在假设文件的位置,并且它们是不正确的。您的exe是从具有系统帐户和未知工作目录的msiexec.exe运行的。它不是从具有资源管理器设置工作目录并使用您的凭据运行它的交互式用户shell运行的。如果您的代码只是尝试打开a.config而未指定完整的确切路径,那么它就无法找到它。
所有VS自定义操作都会在安装完所有内容后运行,所以你很幸运。您不需要提交自定义操作 - 安装自定义操作也可以。安装完所有文件后也会调用它。目前尚不清楚为什么要验证文件的存在 - 没有意义。 MSI安装工作并安装所有内容或失败,回滚并将系统还原到以前的状态。因此,检查它是否安装了文件是没有意义的。
答案 1 :(得分:0)
使用此项目类型无法解决此问题。它根本无法完全控制何时安排自定义操作,并将其归结为过于简单的选择。如果我是你,我会将此自定义操作纳入WiX合并模块,然后将其合并到您的VDPROJ安装程序中(或完全使用WiX)。