MSI已更改或损坏

时间:2018-07-19 16:38:30

标签: visual-studio msbuild wix wix3 wix3.10

我是wix的新手,请多多包涵。

我有一个适用于我们WPF Windows应用程序的安装程序。我现在正在尝试在安装应用程序之前先安装必备软件。我可以构建与应用程序先决条件打包在一起的安装程序,但是当我运行它并单击“是”时,如果我要为我的先决条件程序运行安装程序,它将抛出错误。

安装程序检测到文件'C:\ Users \ DevMachine \ AppData \ Local \ Temp \ VSDC06D.tmp \ SlimDX \ SlimDX Runtime .NET 4.0 x64(2012年1月).msi'自首​​次发布以来已更改或可能已损坏。

我知道slimDx msi没有损坏,因为我可以从我的安装程序目录中运行它。因此,也许它认为它已经改变了。

我在应用程序中的所有项目上都使用带有.snk键的代码签名,这可能是某种原因吗?如果这是问题,我不知如何解决。

我将可重新分发的slimDx软件包复制到msbuild部分的Setup文件夹中。

getApplicationDocumentsDirectory()

因此,最后,我尝试在启动应用程序Setup.exe时完成安装,它将首先运行SlimDx可再发行组件的安装程序,然后为我的应用程序运行安装程序。

请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

是从Internet标志下载的吗? :只是为了确保当您检查 SlimDX Runtime .NET 4.0 x64 (January 2012).msi 的文件属性时是否可以设置了“ 从互联网下载”标志?

我不这么认为,但需要验证。我认为MSI的测试运行可能会删除该标志,但是您可能已经在不删除该标志的情况下制作了已下载文件的副本,而这就是包含在软件包中的副本(不是您运行的MSI):

Blocked File

  • 从Internet下载文件时,文件将具有备用数据流Zone.Identifier,其值为3,指示文件是从Internet下载的。这会触发安全警告。
  • 对于您而言,只需使用文件属性对话框中的指示按钮手动删除标志,然后重新编译设置和启动器即可。

此处提供有关此替代流的更多信息:How to pass the Windows Defender SmartScreen Protection?


签名 :您实际上如何签名Setup.exe和各种components / prerequisities?有关签名的一些信息: snk vs. code signing certificate 推荐)。

还有一个问题,其中Setup.exe期望 SHA1哈希,并且设置使用 SHA2哈希签名:"File has... changed... or may be corrupt" error when you publish a ClickOnce application in Visual Studio 2010 and the .NET Framework 4.5 with custom prerequisites

  

提取 :“ ...之所以会出现此问题,因为构建过程通过使用SHA2哈希生成必备文件的摘要   打包必备文件时使用的算法。但是,Setup.exe   文件尝试使用SHA1算法读取摘要。因此,   预期摘要与实际摘要之间发生不匹配,   和Setup.exe确定.msi文件丢失或   损坏。


安全软件 :尽管在这种情况下,我觉得它很反感,但还是可以验证是否有任何安全软件没有阻止您的安装(无论出于何种原因)。尝试暂时禁用它,还是在没有安装任何其他工具的干净虚拟机上进行测试?


某些链接