我是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可再发行组件的安装程序,然后为我的应用程序运行安装程序。
请帮助,谢谢。
答案 0 :(得分:0)
是从Internet标志下载的吗? :只是为了确保当您检查 SlimDX Runtime .NET 4.0 x64 (January 2012).msi
的文件属性时是否可以设置了“ 从互联网下载”标志?
我不这么认为,但需要验证。我认为MSI的测试运行可能会删除该标志,但是您可能已经在不删除该标志的情况下制作了已下载文件的副本,而这就是包含在软件包中的副本(不是您运行的MSI):
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文件丢失或 损坏。“
安全软件 :尽管在这种情况下,我觉得它很反感,但还是可以验证是否有任何安全软件没有阻止您的安装(无论出于何种原因)。尝试暂时禁用它,还是在没有安装任何其他工具的干净虚拟机上进行测试?
某些链接 :