我已经搜索了很多关于此的内容,但没有得到任何可以理解的答案。可能是我没有用正确的词搜索。 :)
问题是: 如果我在c#中创建一个exe,而我要运行它的计算机上没有.NET Framework,我怎么想在该计算机上运行该exe?
有没有办法可以先检查.NET Framework并静默安装所需的版本?
任何解决方法都会非常有用。
答案 0 :(得分:8)
Visual Studio 2010具有Setup&部署项目(至少专业版+确实......我不能肯定地说其他版本)。这将包括先决条件,例如您的应用所需的.NET框架版本。
修改强>
没有"解决方法"。 "静默安装依赖关系的概念"是一个安装程序。否则,您需要指示.exe的使用者自行下载框架,或在运行应用程序之前运行另一个exe。
您试图避免使用安装程序,然后询问如何在不使用安装程序的情况下运行应用程序。
答案 1 :(得分:1)
如果计算机没有安装.net框架,用户将在应用程序启动时收到错误消息(不记得确切的文本)
您可以随时查看机器上存在哪个版本的框架,并在必要时运行安装程序
只需查看此注册码
即可HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
Here是更多细节
在创建设置时,您可以将.net框架设置为预先要求,如果不存在,安装程序将关注安装框架
的更多详细信息答案 2 :(得分:0)
.NET Framework包含您在开发中使用的dll和函数,然后必须安装它
您必须阅读有关.NET Framework http://msdn.microsoft.com/en-us/library/zw4w595w.aspx
的信息解决方法是进行安装以检查是否存在
答案 3 :(得分:0)
没有隐藏的方法来安装.NET框架,您可以在您的exe或应用程序设置中包含.net框架。因此,如果找不到所需机器上的.net框架,它将自动安装。
答案 4 :(得分:0)
如果计算机没有所需的.NET版本,弹出的带有“停止”图像的msgbox会告诉您应用程序需要安装.NET xxx,就是这样。
答案 5 :(得分:0)
如果您真的想在没有.NET Framework的情况下运行它,您可以使用某些软件将每个依赖项打包在一个文件中,而无需安装它。
其中有很多,我知道例如Spoon Studio
无论如何,我真的不鼓励使用这些。
答案 6 :(得分:0)
如果您在Windows XP中运行,只需添加.Net Framework即可。在窗口7 .Net Framework已安装,您可以在没有任何安装的情况下运行
答案 7 :(得分:0)
对于Visual Studio 2012及更高版本,您可以创建InstalShield LE安装程序
然后在'2。指定应用程序数据'> 'Redistributables'选择您希望部署的.NET框架的完整版本,即'Microsoft .NET Framework 4.0 Full'(我建议将Web下载为几百Mb)
在'5。定义设置要求和操作'> “要求”选择要求并检查所需的.NET框架。
当安装程序运行时,将告知用户需要.NET并单击“确定”(或者这些行中的某些内容,我完全忘了)安装.NET。
答案 8 :(得分:0)
我看不到此问题的示例答案。因此,下面是一个示例,该示例将检查用户是否具有.NET Framework 4.5或更高版本,然后提示他们下载:
//.. your code
// Calling function inside Load event
private void Form1_Load(object sender, EventArgs e)
{
//call function
Get45PlusFromRegistry();
}
//Functions
private static void Get45PlusFromRegistry()
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null)
{
//Do nothing if .Net 4.5 or higher is found.
//MessageBox.Show(".NET Framework Version: " + CheckFor45PlusVersion((int)ndpKey.GetValue("Release")));
}
else
{
// Do something if .Net 4.5 or higher is found
MessageBox.Show("This program Requires .NET Framework Version 4.5 or later. Click OK to access Microsoft official website and download .NET 4.5 framework.");
Process.Start(@"https://www.microsoft.com/en-us/download/details.aspx?id=30653");
}
}
}
// Checking the version using >= will enable forward compatibility.
private static string CheckFor45PlusVersion(int releaseKey)
{
if (releaseKey >= 461808)
return "4.7.2 or later";
if (releaseKey >= 461308)
return "4.7.1";
if (releaseKey >= 460798)
return "4.7";
if (releaseKey >= 394802)
return "4.6.2";
if (releaseKey >= 394254)
return "4.6.1";
if (releaseKey >= 393295)
return "4.6";
if (releaseKey >= 379893)
return "4.5.2";
if (releaseKey >= 378675)
return "4.5.1";
if (releaseKey >= 378389)
return "4.5";
// This code should never execute. A non-null release key should mean
// that 4.5 or later is installed.
return "No 4.5 or later version detected";
}
//..your code