【问题标题】:Create Desktop(window) application that can run without installing?创建无需安装即可运行的桌面(窗口)应用程序?
【发布时间】:2011-01-01 22:57:25
【问题描述】:

我想在 C# 中创建一个基于窗口的应用程序,这样我们就可以在不将应用程序安装到每个系统中的情况下运行它。 它还需要通过数据库连接该应用程序。

我想创建这个应用程序,以便它可以直接通过pendrive运行,也可以写入数据库。

我知道如何通过窗口应用程序使用数据库,但只能使用安装程序。

我创建了许多窗口应用程序 但之后都在客户端机器上运行 安装已部署的设置。但现在 我希望客户端不需要安装 部署的设置。他可以使用我的 直接点击我的申请 可执行文件

【问题讨论】:

    标签: c# .net desktop-application


    【解决方案1】:

    Windows 中没有任何东西需要安装应用程序。也就是说,安装的目的是:

    • 让最终用户的事情变得更简单。
    • 设置注册表,通常用于路径信息和卸载信息。
    • 初始化软件在首次运行之前可能需要的任何初始信息。

    只需避免使用注册表并将文件本地保存到您的应用程序通常就足以使您的应用程序具有可移植性。

    也就是说,只要您允许用户在您的软件中选择数据库位置,就可以了。将笔式驱动器上的信息保存在 .ini 文件中,这样您插入的每台计算机都可以读取这些相同的设置。

    如果您希望每台计算机都有不同的数据库连接字符串,您可以将您的设置保存到%appdata% 目录。当用户稍后重新插入 pendrive 时,他的设置仍然存在,其他用户将不会看到这些相同的设置。

    然而,第二种方法的缺点是用户无法“卸载”并自动恢复写入%appdata% 的空间。但是,对于大多数私人业务应用程序来说,这并不是什么大问题。


    编辑:如果您真正的问题是如何在没有安装程序的情况下分发应用程序,只需构建应用程序的发布版本,然后查看 /bin/Release/ 内你的项目。将这些文件复制到另一个位置,删除所有调试文件或不需要的文件,并确保您拥有所有依赖项。

    【讨论】:

    • @Will Eddins :谢谢 Eddin,如果我没有理解错,你的意思是这样说。继续我开发窗口应用程序的传统方式,并处理您向客户提到的在 bin 文件夹中创建的 exe 文件。 ?
    • 没错。将文件复制到闪存驱动器,确保它们在另一台计算机上工作(您没有丢失 DLL),然后分发出去。
    • @Will Eddins Thx,在实际实施后会回来接受这个问题。我会确保框架和其他必要的文件都存在
    • 您需要注意,仅获取可执行文件并从笔式驱动器或网络运行它们假定已安装正确版本的 .Net。可能是使用 VS2008 或 VS2010 构建的项目会在需要时自动安装它,但 VS2005 不会。此外,当从网络驱动器运行时,.Net 的安全性可能会影响应用程序的某些部分。 IIRC,默认情况下,例如,当从网络驱动器运行时,不允许您的应用程序写入注册表。希望这会有所帮助。
    • @Sebastiaan Megens 是否意味着我们需要在客户端机器上安装完整的 VS.NET 才能直接运行?或者这是否意味着我们只需要在客户端机器中安装正确版本的框架。 ?
    【解决方案2】:

    如果您只想连接到数据库,您可以在 EXE 中执行此操作,而无需任何类型的安装程序。如何完成将取决于它是哪个数据库,以及您如何连接到它,但通常需要在 EXE(或 EXE 可以读取的外部 XML 文件)中编码的项目是 连接字符串。这个连接字符串可能是安装程序正在管理的。

    可以在此处找到有关使用 C# 构建您的第一个 Windows 应用程序的好教程: http://msdn.microsoft.com/en-us/library/360kwx3z.aspx

    【讨论】:

    • 我知道如何与数据库交互,但我也需要窗口应用程序。这样任何用户都可以通过GUI界面输入数据
    • 所以构建一个。如果您使用的是 Visual Studio 或 Visual Studio Express,请从“文件/新建”对话框中选择“Windows 应用程序”。
    • @Robert Harvey 是否可以创建不需要任何安装的 exe 之类的东西。但启动 GUI 窗口
    • @Robert Harvey 问题详细,请检查
    • 是的,您从 Visual Studio 的“文件/新建”对话框中选择“Windows 应用程序”,创建应用程序并构建。它将创建一个可执行文件,可以复制到任何 Windows 计算机并执行。
    【解决方案3】:

    如果您不知道在哪里以及如何启动窗体应用程序或如何连接到数据库等,有很多教程,您可以很容易地谷歌;)

    这里有几个例子:

    GUI 相关:

    Tutorial: Working with Windows Forms - Part I

    GUI Windows Forms « C# / CSharp Tutorial

    Windows Forms tutorial with C#

    数据库相关:

    Creating a database connection

    【讨论】:

      【解决方案4】:

      最简单的安装形式;使用 if/else;当应用程序启动时,它会检查一些注册表项(比如说,installation=done),如果注册表项的值为=“done”,则运行else部分,这意味着运行应用程序。如果它“未完成”,则设置所有初始设置,然后运行该应用程序。一个伪代码如下:

      if(HasValidRegistryKeys()) //Check if initial settings are already there
      {
          Runnable=true;
      }
      else
      {
      //Not installed, lets setup app settings
      //Assume that the application is running for the first time.
      try
      {
          SetupRegistry(); //Set installation=done
          SetupDatabase();
          //Setup more things.
          Runnable=true;
      }
      catch()
      {Runnable=false;}
      
      }
      
      //Run the app
      if(Runnable)
      {
          RunApp();
      }
      else
      {
          MessageBox.Show("Some error");
      }
      

      【讨论】:

        猜你喜欢
        • 2011-02-25
        • 2013-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        相关资源
        最近更新 更多