Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Msbuild 什么会导致MSIExec错误1619';无法打开此安装包';_Msbuild_Wix_Windows Installer_Acceptance Testing - Fatal编程技术网

Msbuild 什么会导致MSIExec错误1619';无法打开此安装包';

Msbuild 什么会导致MSIExec错误1619';无法打开此安装包';,msbuild,wix,windows-installer,acceptance-testing,Msbuild,Wix,Windows Installer,Acceptance Testing,我正试图从一组示例程序中自动安装和卸载一组MSI文件(由WiX生成)。出于某种原因,双击即可安装的.MSI文件会生成: 无法打开此安装包。请验证该软件包是否存在以及您是否可以访问它,或者与应用程序供应商联系以验证这是一个有效的Windows Installer软件包 当我用MSIEXEC以以下方式调用它时: <ItemGroup> <_SampleMsi Include="$(_ArtifactsPathAcceptanceSamples)\**\*.msi" />

我正试图从一组示例程序中自动安装和卸载一组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;" />
有什么好处

  • 不要照字面理解信息的内容。您应该得出的结论是,misexec将命令的某个部分视为文件名,但它没有加载并处理它的完整性。无论这是因为路径太长、权限被拒绝,还是其他一些条件仅限于您的想象(大多数知识库文章似乎与安装程序缓存问题有关,这通常是基于GUID的语法或修补/升级选项)

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

    i、 e.您需要将
    FC7445BB-7E1D-4E36-A42A-CFA56263E453
    替换为
    {FC7445BB-7E1D-4E36-A42A-CFA56263E453}

    (我已停止信任/读取输出,并考虑GUID可能解析为msiexec不满意的缓存MSI,原因与它似乎不满意安装语法相同,这是本空间中所有KB文章都倾向于讨论的。)

  • 您的路径包含相对跳跃,尽管其净长度为160个字符,因此底层文件API会阻塞。人们喜欢编写具有误导性的通用错误消息

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

    另一种补救办法是


  • 刚刚删除了
    \
    准备结束文件名,它成功了。

    看起来你在发布问题之后就开始键入自己问题的答案:-)@Yansklayarenko是的,你抓到我了:D要么把它贴在这里,要么把它贴在内部维基上。我觉得难以置信的是,msiexec洞穴探险的信息如此之少。似乎所有那些“显而易见”的疑难解答都存在于少数安装专家的脑海中…
    msiexec/i.\MyFile.msi
    不起作用,因为.\idi*t在微软写了这个程序?@Haipan也许你可以通过只传递文件名,然后将路径放入
    Exec
    WorkingDirectory
    中来解决这个问题,这样你就可以处理这个问题了?哦,我只是在抱怨,呵呵
    msiexec/i MyFile.msi
    工作正常。但是我使用了tab completion,它会自动添加。\n奇怪-这也解决了我的问题
    msiexec -passive -norestart -x FC7445BB-7E1D-4E36-A42A-CFA56263E453