我的客户端遇到了我们的应用程序的.msi安装程序问题。 WiX用于创建此安装程序。该应用程序已安装在许多其他机器上,但在他的机器上显示消息:
此安装包不可能 打开。联系应用程序供应商 验证这是一个有效的Windows 安装程序包。
我的猜测是,这是两种可能性中的一种:
最可能的可能性是什么,还是有其他可能性我不知道?
我想我已经重新创建了用户的问题。如果从命令shell运行 MyFile.msi ,那么它成功加载,然后我在日志文件中得到它:
=== Verbose logging started: 2/12/2009 10:34:38 Build type: SHIP UNICODE 4.00.6001.00 Calling process: C:\Windows\System32\msiexec.exe ===
MSI (c) (F4:04) [10:34:38:795]: Resetting cached policy values
MSI (c) (F4:04) [10:34:38:795]: Machine policy value 'Debug' is 0
MSI (c) (F4:04) [10:34:38:795]: ******* RunEngine:
******* Product: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi
******* Action:
******* CommandLine: **********
MSI (c) (F4:04) [10:34:38:802]: Machine policy value 'DisableUserInstalls' is 0
MSI (c) (F4:04) [10:34:38:830]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 3: 2
MSI (c) (F4:04) [10:34:39:140]: SOFTWARE RESTRICTION POLICY: Verifying package --> 'C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi' against software restriction policy
MSI (c) (F4:04) [10:34:39:141]: Note: 1: 2262 2: DigitalSignature 3: -2147287038
MSI (c) (F4:04) [10:34:39:141]: SOFTWARE RESTRICTION POLICY: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi is not digitally signed
MSI (c) (F4:04) [10:34:39:142]: SOFTWARE RESTRICTION POLICY: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi is permitted to run at the 'unrestricted' authorization level.
MSI (c) (F4:04) [10:34:39:189]: Cloaking enabled.
MSI (c) (F4:04) [10:34:39:190]: Attempting to enable all disabled privileges before calling Install on Server
MSI (c) (F4:04) [10:34:39:197]: End dialog not enabled
MSI (c) (F4:04) [10:34:39:197]: Original package ==> C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi
MSI (c) (F4:04) [10:34:39:197]: Package we're running from ==> C:\Users\kelley\AppData\Local\Temp\40a3581.msi
.
.
.
但是,如果我运行 msiexec / i MyFile.msi / l * v MyLog.TXT ,我明白了:
=== Verbose logging started: 2/12/2009 10:32:19 Build type: SHIP UNICODE 4.00.6001.00 Calling process: C:\Windows\sy
stem32\msiexec.exe ===
MSI (c) (FC:F0) [10:32:19:597]: Resetting cached policy values
MSI (c) (FC:F0) [10:32:19:597]: Machine policy value 'Debug' is 0
MSI (c) (FC:F0) [10:32:19:597]: ******* RunEngine:
******* Product: .\PixelActiveCityScape_v1_6_Demo.msi
******* Action:
******* CommandLine: **********
MSI (c) (FC:F0) [10:32:19:599]: Note: 1: 2203 2: .\PixelActiveCityScape_v1_6_Demo.msi 3: -2147287038
MSI (c) (FC:F0) [10:32:19:600]: MainEngineThread is returning 2
=== Verbose logging stopped: 2/12/2009 10:32:19 ===
这显示了这个对话框:
此安装包不可能 打开。验证包 存在,您可以访问它,或 联系应用程序供应商 验证这是一个有效的Windows 安装程序包。
所以它似乎是一个权限问题,但我不确定为什么以及如何解决它。我是否可能需要对.msi文件进行数字签名?
答案 0 :(得分:12)
<强>背景强>
当MSI安装程序文件未完全下载或被我的防病毒程序损坏或被我的FTP客户端损坏时,我注意到完全相同的消息。
错误消息实际上来自msiexec.exe,它是Windows Installer系统的可执行程序,它实际解释MSI安装程序文件并将软件安装在客户机的目标上。
检查MSI文件的完整性:
使用md5.exe之类的内容计算MSI安装程序文件的已知良好副本的MD5sum。让客户端为他的副本做同样的事情,然后比较哈希值。如果结果不同,则客户端的MSI安装程序文件副本肯定会损坏。
例如:
在你的结尾:
C:\Documents and Settings\yourbox\Desktop>md5.exe AcroRead.msi C587C739666E26B2A9B1F5BBAF358808 AcroRead.msi
在客户端:
C:\Documents and Settings\theclient\Desktop>md5.exe AcroRead.msi 90AFFBD9A1954EC9FF029B7AD7183A16 AcroRead.msi
答案 1 :(得分:7)
我遇到了这个问题(“MainEngineThread返回2”)。这个帖子对缩小问题很有帮助,但我还没有完全解决它。
在我们的例子中,我们怀疑问题与BitLocker和/或用相对路径调用msiexec有关(例如“msiexec / i .. \ foo.msi”)。 直接运行“.. \ foo.msi”,在正确的文件夹中运行“msiexec / i foo.msi”也可以。
也许这些线索会帮助别人。在我们的例子中,我们将更改目录结构以避免使用“..”。
答案 2 :(得分:5)
如果msiexec检测到MSI文件已损坏,则会抛出此错误消息。它可以做到这一点,因为所有MSI文件都有校验和,有些甚至是数字签名。
不幸的是,MSI文件的这种损坏发生了很多。不仅仅是因为下载时网络连接不稳定,而且最常见的是病毒扫描程序会干扰下载本身 - 如果他们试图'清理'数据流,你最终会导致损坏的MSI。
解决此问题的唯一方法是重新下载MSI文件,并可能禁用该下载的病毒扫描程序/防火墙。在尝试安装MSI文件之前,可以在将MSI文件保存到磁盘后检查病毒。
答案 3 :(得分:4)
您可以尝试在命令行中启动MSI并获取日志文件。
像这样: MSI:msiexec / i(Filename.MSI)/ l * v(filename.TXT)答案 4 :(得分:1)
如果有人正在开发新的安装程序并遇到同样的错误,请检查您的Bootstrapper项目输出类型。我添加了一个新的Bootstrapper项目,并复制了一堆已知良好的代码。项目输出类型默认为MSI,当试图测试它时,我得到一个相同的&#34; MainEngineThread返回2&#34;和前一行相同。
将输出类型设置为适当的EXE,并且效果很好。
答案 5 :(得分:0)
答案 6 :(得分:0)
当我使用absolute path ms file
示例:
msiexec.exe /i .\a.msi
msiexec.exe /i c:\a.msi
答案 7 :(得分:0)
我发现了问题!
我们的情况类似:
我们发现这是由于MSIEXEC访问MSI文件的方式所致,并且ISSUE与对下载文件执行的新Windows阻止系统有关(该死!)
运行powershell命令“ Unblock-File”就足够了,然后一切开始正常运行!
我希望这会很有用,我将始终写信给safe.com团队将此免责声明添加到他们的文档中。