Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation Windows安装程序包的问题_Installation_Wix_Windows Installer_Corruption - Fatal编程技术网

Installation Windows安装程序包的问题

Installation Windows安装程序包的问题,installation,wix,windows-installer,corruption,Installation,Wix,Windows Installer,Corruption,我有一个客户端与我们的应用程序的.msi安装程序有问题。WiX用于创建此安装程序。该应用程序在几十台其他机器上安装得很好,但在他的机器上显示以下消息: 无法安装此安装包 开的。联系应用程序供应商 要验证这是一个有效的Windows 安装程序包 我猜这是以下两种可能性之一: 客户端计算机上的Windows Installer版本已过期 他拥有的.msi可能已损坏 最有可能的可能性是什么,或者还有其他我不知道的可能性吗 我想我已经重新创建了用户的问题。如果从命令shell运行MyFile.msi,则

我有一个客户端与我们的应用程序的.msi安装程序有问题。WiX用于创建此安装程序。该应用程序在几十台其他机器上安装得很好,但在他的机器上显示以下消息:

无法安装此安装包 开的。联系应用程序供应商 要验证这是一个有效的Windows 安装程序包

我猜这是以下两种可能性之一:

  • 客户端计算机上的Windows Installer版本已过期
  • 他拥有的.msi可能已损坏
  • 最有可能的可能性是什么,或者还有其他我不知道的可能性吗

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

    背景:

    当MSI安装程序文件未完全下载,或被我的防病毒程序损坏,或被FTP客户端损坏时,我注意到了完全相同的消息

    错误消息实际上来自Windows Installer系统的可执行程序,它实际解释MSI安装程序文件并在目标客户机上安装软件


    检查MSI文件的完整性:

    使用以下方法计算MSI安装程序文件的已知良好副本的MD5sum。让客户机对其副本执行相同的操作,然后比较哈希值。如果结果不同,则MSI安装程序文件的客户端副本肯定已损坏


    例如

    在你这边:

    C:\Documents and Settings\yourbox\Desktop>md5.exe AcroRead.msi C587C739666E26B2A9B1F5BBAF358808 AcroRead.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 C:\Documents and Settings\theclient\Desktop>md5.exe AcroRead.msi 90AFFBD9A1954EC9FF029B7AD7183A16 AcroRead.msi
    您可以尝试在命令行中启动MSI并获取日志文件

    像这样:
    MSI:msiexec/i(Filename.MSI)/l*v(Filename.TXT)

    如果msiexec检测到MSI文件已损坏,则会引发此错误消息。它可以做到这一点,因为所有MSI文件都有校验和,有些甚至是数字签名的

    不幸的是,MSI文件的这种损坏经常发生。这不仅仅是因为下载时网络连接不牢固,而且通常是由于病毒扫描程序干扰了下载本身——如果他们试图“净化”数据流,你最终会得到一个损坏的MSI

    解决此问题的唯一方法是重新下载MSI文件,并可能为该下载禁用病毒扫描程序/防火墙。您可以在MSI文件保存到磁盘后,在尝试安装它之前检查病毒。

    我也遇到了这个问题(“MainEngineThread返回2”)。这条线索有助于缩小问题的范围,但我还没有完全解决它

    在我们的案例中,我们怀疑问题与BitLocker和/或使用相对路径(如“msiexec/i..\foo.msi”)调用msiexec有关。 直接运行“.\foo.msi”可以工作,在适当的文件夹中运行“msiexec/i foo.msi”也可以工作


    也许这些线索会帮助其他人。在本例中,我们将更改目录结构以避免“.”

    如果有人在开发新的安装程序时遇到相同的错误,请检查引导程序项目的输出类型。我添加了一个新的引导程序项目,并复制了一堆已知的好代码。项目输出类型默认为MSI,当尝试测试它时,我得到了相同的“MainEngineThread返回2”和相同的前一行

    将输出类型设置为其相应的EXE,它工作正常。

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

    当我使用
    绝对路径ms文件时,它工作

    例如:

    msiexec.exe/i。\a.msi

    msiexec.exe/ic:\a.msi


    我发现问题了

    我们的情况类似:

    • 我们下载了msi(我们尝试了好几次:试用版、最新的2019版、2019年beta版和2020年beta版)
    • 我们以交互方式启动了MSI,一切正常
    • 当我们尝试使用静默模式(也有很好的文档记录)时,结果总是一样的,只需几行就可以完成,没有有用的文档记录
    我们发现这是由于MSIEXEC访问MSI文件的方式造成的,问题与新的Windows阻止系统对下载的文件执行的操作有关(该死!)

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


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

    关于md5检查的好主意。不久前遇到此问题时,我创建了一个GUI实用程序来检查哈希值。如果您感兴趣,可以在这里找到:这是一个很好的工具,Jon T。谢谢!关于相对路径的好观点。看起来msiexec.exe不喜欢相对路径。谢谢。这是一种非常违反直觉的行为。这让我省去了很多挫折。你也可以右键单击文件,转到属性并取消选中该框。(或与您的操作系统等效的-可能是Windows 10中的复选框)。U对,但如果您编写了所有脚本(就像我们在docker构建期间所做的那样),则命令行等效于