Windows Installer程序包的问题

时间:2009-02-11 18:52:51

标签: installer wix windows-installer corruption

我的客户端遇到了我们的应用程序的.msi安装程序问题。 WiX用于创建此安装程序。该应用程序已安装在许多其他机器上,但在他的机器上显示消息:

  

此安装包不可能   打开。联系应用程序供应商   验证这是一个有效的Windows   安装程序包。

我的猜测是,这是两种可能性中的一种:

  1. 客户端计算机上的Windows Installer版本已过期。
  2. 他的.msi可能已被破坏。
  3. 最可能的可能性是什么,还是有其他可能性我不知道?

    我想我已经重新创建了用户的问题。如果从命令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文件进行数字签名?

8 个答案:

答案 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)

enter image description here

解决方案: 1)以管理员身份运行cmd, 2)F:\ SOFTWARES&gt; msiexec / i node-v4.5.0-x64.msi

答案 6 :(得分:0)

当我使用absolute path ms file

时可以使用

示例:

  

msiexec.exe /i .\a.msi

     

msiexec.exe /i c:\a.msi

答案 7 :(得分:0)

我发现了问题!

我们的情况类似:

  • 我们下载了msi(我们对它们进行了多次尝试:试用版,最新版2019,beta 2019和beta 2020)
  • 我们以交互方式启动了MSI,一切正常
  • 当我们尝试使用安静模式(有据可查)时,结果总是相同的,但经过几行却没有有用的文档,结果才结束。

我们发现这是由于MSIEXEC访问MSI文件的方式所致,并且ISSUE与对下载文件执行的新Windows阻止系统有关(该死!)

运行powershell命令“ Unblock-File”就足够了,然后一切开始正常运行!

我希望这会很有用,我将始终写信给safe.com团队将此免责声明添加到他们的文档中。