我已经使用Wix和Custom Actions创建了一个安装包(msi)。安装.NET4的系统上的安装工作正常,但在干净的系统(WIN7 .NET3.5)上,它会因波纹管错误而失败。我缩小了wxs包,似乎如果我删除对CustomActions的引用,msi安装(但没有注册表更改)。 CustomActions根据用户PC配置向Registry输入新值。同样的项目再次在.NET4 PC上发挥作用。 Target框架随处可见.NET3.5。有什么想法吗?
=== Logging stopped: 7/13/2014 14:23:19 ===
MSI (c) (00:F4) [14:23:19:249]: Note: 1: 1708
MSI (c) (00:F4) [14:23:19:249]: Note: 1: 2205 2: 3: Error
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1708
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2205 2: 3: Error
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI (c) (00:F4) [14:23:19:267]: Product: MyProject -- Installation failed.
MSI (c) (00:F4) [14:23:19:267]: Windows Installer installed the product. Product Name: MyProject . Product Version: 1.0.1. Product Language: 1033. Manufacturer: Me. Installation success or error status: 1603.
答案 0 :(得分:1)
它相当奇怪的修复但是,我所要做的就是添加波纹管片段。谢谢大家的支持。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
答案 1 :(得分:0)
虽然我没有完全掌握这个特定问题的速度,但我会尝试提供答案。如果您的应用程序需要.NET 4,这显然没有帮助,但是您是否尝试编译代码以针对 .NET 2.0框架而不是.NET 4?大多数计算机应该能够运行2.0代码,除非明确锁定该框架以供使用 - 某些公司可能就是这种情况。
这样的运行时限制让我更喜欢原生的 C ++代码(或 Installscript ,这也是Installshield更高版本中的原生代码),用于严肃的设置广泛使用。
模拟的自定义操作代码(.NET代码或有效的脚本编写,例如有效的VBScript)对于内部工作非常好 - 它甚至可以为设置提供透明度到了什么是key corporate benefit of MSI。
除了定位.NET 2.0之外,您还可以check that the right version of the .NET framework is available并中止设置或将其安装为prerequisite via Wix's Burn feature。
最后,这实际上是我首选的解决方案,您可以让应用程序本身使用所需的设置更新注册表,并将它们从您的设置中删除。这允许更多的灵活性和错误处理。这完全取决于您要添加的设置类型。 HKLM设置通常必须由您的设置添加。
答案 2 :(得分:0)