自定义UI中的简单WiX自定义操作在Windows 7中过早结束

时间:2018-05-09 09:57:38

标签: wix windows-installer custom-action wix3.5 wix3.8

使用自定义操作时,我的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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

事实证明,尽管我在CustomAction.config文件中使用了不同的.Net版本,但在Custom Action项目中,目标.Net版本为4.5。所以它取代了配置属性。一旦我将它减少到3.5,它就开始工作了。 感谢大家的所有建议。

答案 1 :(得分:0)

我不是托管代码自定义操作方面的专家,Chris Painter是这方面的人,但让我检查一下:

  • 此自定义操作是否需要管理员权限?
  • 如果是,是否将其配置为在系统上下文中运行的延迟模式自定义操作?
  • 自定义操作的运行顺序是什么? GUI?执行?既?
  • 实际上做的自定义操作是什么?
  • 自定义操作所依赖的.NET类和.NET功能以及Widows功能是什么? (据我们所知,你可以实例化COM服务器)

详细,调试,记录 See installsite.org on logging。从那个内容,我会尝试:

msiexec.exe /i C:\Path\Your.msi /L*vx! C:\Your.log

这是完整的详细日志记录(*v),包含额外的调试信息(x)和连续日志记录(!)(而不是批量写入日志)。后者使安装速度慢得多,但确保没有因崩溃而丢失日志缓冲区。

一些链接(用于保管):