【发布时间】:2018-10-19 09:40:04
【问题描述】:
我的 WiX 安装程序 UI 在使用自定义操作时出错。 有趣的是,安装程序在 Windows 10 中运行良好,但在 Windows 7 上启动时,安装程序被中断。
从安装程序日志中,错误代码显示为2896。
谷歌进一步搜索错误代码,指出它可能是 .net 框架版本不匹配。所以我修改了我的CustomAction.config 如下:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v3.0" />
<supportedRuntime version="v3.5" />
<supportedRuntime version="v2.0.50727"/>
</startup>
我通过以下命令验证了安装的版本:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP"
这里还有什么我想念的吗?
编辑: 这是供您参考的自定义操作代码:
namespace ValidateIP
{
public class CustomActions
{
[CustomAction]
public static ActionResult ValidateIP(Session session)
{
session.Log("Begin ValidateIP");
if (string.IsNullOrEmpty(session["IPVAL"]))
{
session["VALIDIP"] = "0";
}
else
{
session["VALIDIP"] = "1";
}
return ActionResult.Success;
}
}
}
【问题讨论】:
-
也许可以尝试使用额外的调试信息进行详细日志记录,并在不缓冲的情况下直接写入(以防止由于崩溃而丢失日志缓冲区):
msiexec.exe /i C:\Path\Your.msi /L*vx! C:\Your.log并查看您是否获得有关运行时错误的更多信息。 -
可能您的自定义操作是针对特定 .Net 框架版本构建的 .Net 自定义操作,该版本在运行安装程序的目标计算机上可能不可用。
-
@PankajKapare 能否请您查看我的评论以获取 Stein 的答案。
-
@Rahul:好吧,您的自定义操作有多基本和微不足道并不重要。如果自定义操作 dll 是为 .Net 4.7 构建的,并且如果您在目标机器上只有 .Net 3.5,那么它就无法工作。
-
@PankajKapare 正确,但我也刚开始使用 wix,所以对它没有完整的了解。顺便说一句,我已经用我的代码更新了这个问题,请你检查一下。
标签: wix windows-installer custom-action wix3.5 wix3.8