【问题标题】:C#.NET 3.5 Windows application need to run in .NET FRAMEWORK not installed machine alsoC#.NET 3.5 Windows 应用程序也需要在 .NET FRAMEWORK 未安装的机器上运行
【发布时间】:2011-06-14 06:32:24
【问题描述】:

我在 .net framework 3.5 中开发了一个 Windows 应用程序,如果我使用 setup exe,它在所有机器上都可以正常工作。因为,在设置中我添加了 prerequest .net framework 3.5。所以安装程序会检查本地PC是否有.net framework 3.5。如果没有,预请求将首先工作,然后在其余设置工作之后。这样,创建的windows应用exe就可以正常工作了。

但我的客户的要求是,他们还没有准备好在每台机器上安装安装程序,他们只是告诉他们只会复制粘贴 bin 文件夹的内容。在那个 bin 文件夹中,我们可以使用任意数量的 exe 或 dll 等我们想要的任何东西。但是在那个 bin 文件夹中,我们只能使用一个 SHORT CUT,并且该快捷方式名称应该是“UserClickHere”。

用户总是只点击“UserClickHere”快捷方式。该快捷方式需要第一次打开Setup.exe,从下一次开始我们的Windows应用程序需要打开。 (注意:- 第一次安装 setup.exe 后,我们的 windows 应用程序 exe 应该会自动打开。

这是我的要求,谁能给我示例代码。

提前致谢。

【问题讨论】:

  • 您需要一个可以运行和安装程序的安装程序,它是一个 .net exe,无论天气如何,是否安装了 .net?是这个问题吗?
  • 他需要检查用户是否有 .net - 如果有,请运行应用程序,如果没有 - 安装 .net 并运行应用程序:如果我理解正确。

标签: c# .net-3.5


【解决方案1】:

这是您的解决方案:

  1. 您必须创建一个快捷方式指向的附加应用程序(最好是非托管的)
  2. 此应用程序首先检查是否安装了 .NET Framework 3.5 SP1:

    int version = (int)Registry.LocalMachine.GetValue(@"Software\Microsoft\NET Framework Setup\NDP\v3.5", "SP", (int)0);

  3. 如果版本小于 1,则应下载并安装框架:

    WebClient 客户端 = new WebClient(); client.DownloadFile("http://download.microsoft.com/download/0/6/1/061f001c-8752-4600-a198-53214c69b51f/dotnetfx35setup.exe", "dotnetfx35sp1.exe");

    Process.Start("dotnetfx35sp1.exe", "/lang:enu /qb /norestart").WaitForExit();

  4. 现在您可以运行 WPF 应用程序了:

    Process.Start("MyApp.exe");

【讨论】:

  • 因此,根据上述答案,我肯定需要一个额外的 exe,而且肯定会由一些非托管的 exe 开发。请您建议哪种开发语言更好,您能否举一些小例子。
  • 其实没关系,因为你在所有情况下都使用Windows API。就个人而言,我更喜欢 C++。以下是一些提示:1. Registry API2. How to download file3. Process API
猜你喜欢
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多