我的沮丧程度接近 10。我已经在 wix 安装程序上工作了几个星期。此安装程序为我们的软件安装先决条件。我没有 Visual Studio,所以我制作了一个批处理文件来构建(仅读取命令行)wix 项目。该捆绑包中大约有 9 个先决条件,其中包括 .msi、.msu 和 .exe 文件。
我的问题特别涉及链元素中描述的 ExePackage。无论 DetectCondition、InstallCondition、on Install 还是 Unistall,似乎总是安装几个(但不是全部)ExePackages。日志文件显示 DetectCondition = true 和 InstallCondition = false 但这些问题 ExePackages 仍然执行和安装。每一个。时间。
在过去两周的沮丧中,我在 stackoverflow 上的某个地方读到了 ExePackages 不允许安装程序与 .msi 文件具有相同的可见性,这可能会导致我正在处理的内容出现问题。我似乎记得有人提到在卸载时如何执行 ExePackage,如果实际的 .exe 文件没有正确的内部标志,它将安装而不是卸载。但是,如果我没记错的话,虽然这些答案对他们的问题很好,但我一直无法找到在某些条件下完全阻止执行 ExePackage 的东西。
编辑 1:我使用的是 WiX 3.7 版。
我想要一个例子或一些生命线,给我一个关于如何做到这一点的线索。下面是一个问题 ExePacakge 的例子:
...
<Bundle Name='MySoftware' Version='1.0.0.0' Manufacturer='MyCompany'
UpgradeCode='{GUID}'
Condition='(VersionNT >= v6.1 AND ServicePackLevel >= 1)'>
...
<util:FileSearch Id='CheckChromeVersion' Path='[ProgramFilesFolder]Google\Chrome\Application\chrome.exe' Variable='CHROMEVERSION' Result='version' />
<util:FileSearch Id='CheckChromeExists' Path='[ProgramFilesFolder]Google\Chrome\Application\chrome.exe' Variable='CHROMEEXISTS' Result='exists' />
...
<Chain>
...
<ExePackage …Run Code Online (Sandbox Code Playgroud)