如何创建一个可以在未安装的情况下运行的桌面应用程序?

6
我希望创建一个基于C#的窗口应用程序,这样我们就可以在不安装应用程序到每个系统中的情况下运行它。同时,它需要通过数据库连接该应用程序。
我想创建这个应用程序,以便可以直接通过U盘运行,并且可以写入数据库。
我知道如何使用安装程序在窗口应用程序中工作,但是只有安装程序才能实现。
引用: 我已经创建了许多窗口应用程序,但是所有应用程序都在部署设置后在客户机上运行。但是现在我希望客户端不需要安装设置。他可以通过直接单击我的可执行文件来使用我的应用程序。
4个回答

13

在Windows中没有必要安装应用程序,但是进行安装的目的是为了:

  • 让最终用户更加简单方便地使用。
  • 设置注册表,通常用于路径信息和卸载信息。
  • 在第一次运行之前初始化软件可能需要的任何初始信息。

只需避免使用注册表并将文件保存在本地应用程序中即可使应用程序具有可移植性。

即使如此,在您的软件中允许用户选择数据库位置,您也可以正常工作。例如,在磁盘上保存信息,以 .ini 文件格式保存,允许每台计算机都可以读取相同的设置。

如果您期望每台计算机与数据库连接的字符串不同,则可以将设置保存到 %appdata% 目录中。当用户稍后重新插入USB存储设备时,他的设置仍将存在,并且不会向其他用户显示这些相同的设置。

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


编辑:如果您真正的问题是如何分发一个没有安装程序的应用程序,只需构建您的应用程序的 Release 版本,并在项目中查找 /bin/Release/。将这些文件复制到另一个位置,删除任何调试或不需要的文件,并确保您的所有依赖关系都已按顺序安装。


@Will Eddins:谢谢Eddin,如果我没有理解错误,您的意思是说。继续使用我传统的开发窗口应用程序的方式,并像您提到的那样处理在bin文件夹中创建的exe文件,然后交给客户? - Shantanu Gupta
没错。将文件复制到闪存驱动器中,确保它们可以在另一台计算机上正常工作(没有缺失 DLL 文件),然后就可以分发了。 - Will Eddins
@Will Eddins 谢谢,我会在实际实现之后回来接受这个问题。我会确保框架和其他必要文件都存在。 - Shantanu Gupta
你需要知道,仅仅从U盘或网络运行可执行文件,假定正确版本的.Net已安装。可能使用VS2008或VS2010构建的项目将在需要时自动安装它,但VS2005不会。此外,从网络驱动器运行时,.Net的安全性可能会对应用程序的某些部分产生影响。我IRC,默认情况下,例如当从网络驱动器运行时,你的应用程序不允许写入注册表。希望这有所帮助。 - Sebastiaan M
@Sebastiaan Megens 这是否意味着我们需要在客户机器上安装完整的VS.NET才能直接运行?还是只需要在客户机器上安装正确版本的框架即可? - Shantanu Gupta
这意味着当它无法正常工作时,您应该考虑这一点。尽管在现代计算机上这种情况不太可能发生。在每台可能启动Windows的计算机上获得100%的成功率是不可能的,无论是否使用安装程序。 - Hans Passant

0

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

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");
}

0

如果您只想连接到数据库,可以在不需要任何安装程序的情况下在EXE中完成。如何实现取决于数据库类型以及您是如何连接到该数据库的,但通常需要在EXE(或外部XML文件中)对一个连接字符串进行编码。这个连接字符串可能是由安装程序管理的。

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


我知道如何与数据库进行交互,但我还需要一个窗口应用程序。这样任何用户都可以通过图形用户界面输入数据。 - Shantanu Gupta
那就建立一个。如果你正在使用Visual Studio或Visual Studio Express,从文件/新建对话框中选择“Windows应用程序”。 - Robert Harvey
@Robert Harvey,能否创建一个类似于exe的东西,不需要任何安装,但可以启动GUI窗口? - Shantanu Gupta
@Robert Harvey问题已经详细阐述,请查看。 - Shantanu Gupta
是的,在Visual Studio的文件/新建对话框中选择“Windows应用程序”,创建您的应用程序并构建。它将创建一个单独的可执行文件,可以复制到任何Windows计算机上并执行。 - Robert Harvey
该示例程序位于http://msdn.microsoft.com/en-us/library/360kwx3z.aspx,可无需安装程序即可运行。 - Robert Harvey

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接