我的安装程序的32位和64位版本(几乎)具有完全相同的代码和自定义操作序列(只有与此问题无关的细微差别)
我希望我的安装程序检测它是否已经安装过,在这种情况下运行我自己的代码而不是显示默认的Windows Installer错误:
已安装此产品的另一个版本.此版本的安装无法继续.要配置或删除此产品的现有版本,请使用"控制面板"上的"添加/删除程序".
如果我在安装产品时运行安装程序,我的32位安装程序可以正常运行我的自定义代码,但是我的64位安装程序中的相同代码和自定义操作无法正常运行并始终显示不需要的错误味精.
CheckPreviousVersion是第一个在UI序列中被称为自定义动作的函数,我尝试将它放在不同的位置,比如在InstallValidate之后,但没有任何作用.
我已经检查了详细的日志文件,但我找不到任何可能解释此行为的内容,这里是日志的一部分:
=== Verbose logging started: 05/03/2013 16:27:20 Build type: SHIP UNICODE 5.00.7601.00 Calling process: C:\Windows\system32\msiexec.exe
===
MSI (c) (0C:94) [16:27:20:331]: Machine policy value 'Debug' is 0 MSI (c) (0C:94) [16:27:20:331]: ******* RunEngine:
******* Product: foo.msi
******* Action:
******* CommandLine: ********** MSI (c) (0C:94) [16:27:21:546]: Machine policy value 'DisableUserInstalls' is 0 MSI (c) (0C:94) [16:27:21:557]: SOFTWARE RESTRICTION POLICY: Verifying package --> 'C:\Builds\.msi' against software restriction policy MSI (c) (0C:94) [16:27:21:557]: Note: 1: 2262 2: DigitalSignature …Run Code Online (Sandbox Code Playgroud) installer windows-installer installshield installshield-2011