.NET Framework 4.0.3作为ClickOnce包中的先决条件

时间:2015-07-29 17:59:34

标签: .net visual-studio .net-4.0 clickonce visual-studio-2015

我有一个针对.NET 4.0的应用程序打包为使用VS 2015 Enterprise构建的ClickOnce部署。只安装了4.0就可以安装,但在测试中我发现应用程序需要更新4.0.3(KB2600211)才能正常工作。

如何将此更新作为安装软件的先决条件?它似乎不是一个选项: Prerequisites

1 个答案:

答案 0 :(得分:1)

目前我还没有真正找到解决方案,但我想出了这个相当蹩脚的解决方法。基本上,我发现应用程序启动代码部分在没有此更新的系统上抛出错误,并将其包装在特殊的错误处理代码中。在该错误处理程序中,我只是对当前运行时版本进行手动检查,如果失败,则向用户显示特定的错误消息。

private static string InvalidFxVerMessage = 
    "This application requires .NET Framework v{0} or later but has detected that your system is running v{1}.\n\n" +
    "Please contact your system administrator to install the following components: \n" +
    "\u2003\u2022 Update 4.0.3 for Microsoft .NET Framework 4 – Runtime Update (KB2600211)"

private void InitializeApp()
{
    try
    {
        // Run some code that throws an exception if update 4.0.3 is not installed.
    }
    catch (Exception)
    {
        var envVers = Environment.Version;
        var reqVers = new Version(4, 0, 30319, 551);
        if (envVers < reqVers)
        {
            var msg = string.Format(InvalidFxVerMessage, reqVers, envVers);
            MessageBox.Show(
                msg,
                "Unsupported Framework Version",
                MessageBoxButton.OK,
                MessageBoxImage.Error);
            Environment.Exit(0);
        }

        throw;
    }
}

这不是很好,我很想找到更好的解决方案,但这至少会告诉用户究竟出了什么问题,并告诉他们如何修复它。