.NET Framework 4.0.3 作为 ClickOnce 包中的先决条件
.NET Framework 4.0.3 as a Prerequisite in ClickOnce package
我有一个面向 .NET 4.0 的应用程序,打包为 ClickOnce 部署——使用 VS 2015 Enterprise 构建。仅安装 4.0 即可正常安装,但在测试中我发现该应用程序需要更新 4.0.3 (KB2600211) 才能正常工作。
如何使此更新成为安装软件的先决条件?它似乎不是一个选项:
此时我还没有真正找到解决方案,但我想出了这个相当笨拙的解决方法。基本上,我找到了在没有此更新的系统上引发错误的应用程序启动代码部分,并将其包装在特殊的错误处理代码中。在该错误处理程序中,我只是对当前运行时版本进行手动检查,如果失败,我会向用户显示特定的错误消息。
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;
}
}
这不是很好,我很想找到一个更好的解决方案,但这至少告诉用户到底出了什么问题,并向他们提供了如何修复它的指示。
我有一个面向 .NET 4.0 的应用程序,打包为 ClickOnce 部署——使用 VS 2015 Enterprise 构建。仅安装 4.0 即可正常安装,但在测试中我发现该应用程序需要更新 4.0.3 (KB2600211) 才能正常工作。
如何使此更新成为安装软件的先决条件?它似乎不是一个选项:
此时我还没有真正找到解决方案,但我想出了这个相当笨拙的解决方法。基本上,我找到了在没有此更新的系统上引发错误的应用程序启动代码部分,并将其包装在特殊的错误处理代码中。在该错误处理程序中,我只是对当前运行时版本进行手动检查,如果失败,我会向用户显示特定的错误消息。
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;
}
}
这不是很好,我很想找到一个更好的解决方案,但这至少告诉用户到底出了什么问题,并向他们提供了如何修复它的指示。