【问题标题】:What can cause MSIExec Error 1619 'This installation package could not be opened'什么可能导致 MSIExec 错误 1619“无法打开此安装包”
【发布时间】:2019-05-09 20:19:07
【问题描述】:

我正在尝试从一组示例程序中自动执行一组 MSI 文件(由 WiX 生成)的往返安装和卸载。出于某种原因,一个非常乐意通过双击安装的 .MSI 文件会生成:

无法打开此安装包。验证该包是否存在并且您可以访问它,或者联系应用程序供应商以验证这是一个有效的 Windows Installer 包。

当我以下列方式使用 MSIEXEC 调用它时:

<ItemGroup>
  <_SampleMsi Include="$(_ArtifactsPathAcceptanceSamples)\**\*.msi" />
</ItemGroup>
<Exec Command="$(WixDir)\smoke &quot;%(_SampleMsi.Identity)&quot;"/>
<!--Guarantee precondition even if cleanup didn't work-->
<Exec Command="msiexec -passive -norestart -x &quot;%(_SampleMsi.Identity)&quot;" IgnoreExitCode="true"  />
<Exec Command="msiexec -norestart -i &quot;%(_SampleMsi.Identity)&quot;"  />
<!--Uninstall of every sample should also always work-->
<Exec Command="msiexec -passive -norestart -x &quot;%(_SampleMsi.Identity)&quot;" />

当我尝试根据产品 ID GUID 卸载时也会发生同样的问题:-

msiexec -passive -norestart -x FC7445BB-7E1D-4E36-A42A-CFA56263E453

什么给了?

【问题讨论】:

    标签: msbuild wix windows-installer acceptance-testing


    【解决方案1】:

    刚刚删除了.\ 前置文件名,它起作用了。

    【讨论】:

    • 奇怪 - 这也解决了我的问题
    【解决方案2】:
    1. 不要按字面意思理解消息文本。您应该得出的所有结论是 misexec 将您的命令的某些部分视为文件名,并且它没有得到满意的加载和处理它的全部内容。无论是因为路径太长,权限被拒绝,还是其他任何仅受您想象限制的条件(大多数知识库文章似乎都与安装程序缓存问题有关,这通常是基于 GUID 的语法或修补/升级选项)

    2. 你错过了 GUID 中的大括号,傻瓜。我的意思是即使msiexec /? 没有告诉你或给你看,你也知道 GUID 上有大括号?!

      即你需要用{FC7445BB-7E1D-4E36-A42A-CFA56263E453}替换FC7445BB-7E1D-4E36-A42A-CFA56263E453

      (我已停止信任/读取输出,并认为 GUID 可能解析为 msiexec 不满意的缓存 MSI,原因与它似乎对安装语法不满意的原因相同,这就是全部这个领域的知识库文章倾向于谈论。)

    3. 您的路径包含相对跳转,尽管净长度 160 个字符,因此底层文件 API 令人窒息。人们喜欢编写具有误导性的通用错误消息。

      您可以通过在使用的每个批处理表达式中将上面的 Identity 替换为 FullPath 来修复它。

      另一种补救方法是use a WorkingDirectory with the Exec of msiexec

    【讨论】:

    • 看起来您在发布问题后立即开始输入自己问题的答案 :-)
    • @YanSklyarenko 是的,你抓住了我 :D 要么贴在这里,要么贴在内部 wiki 上。我发现关于 msiexec 探索的信息如此之少令人难以置信。似乎所有“明显”的故障排除问题都存在于少数安装专家的脑海中......
    • msiexec /i .\MyFile.msi 不起作用,因为 .\ MS 的哪个 idi*t 写了这个程序?
    • @HaiPhan 也许您可以通过仅传递文件名然后将路径放入ExecWorkingDirectory 来解决此问题?
    • 哦,我只是在抱怨,呵呵。 msiexec /i MyFile.msi 工作得很好。但我使用的是制表符完成,它会自动添加 .\
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2012-01-15
    • 2011-01-07
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多