我想创建这个应用程序,以便可以直接通过U盘运行,并且可以写入数据库。
我知道如何使用安装程序在窗口应用程序中工作,但是只有安装程序才能实现。
引用: 我已经创建了许多窗口应用程序,但是所有应用程序都在部署设置后在客户机上运行。但是现在我希望客户端不需要安装设置。他可以通过直接单击我的可执行文件来使用我的应用程序。
在Windows中没有必要安装应用程序,但是进行安装的目的是为了:
只需避免使用注册表并将文件保存在本地应用程序中即可使应用程序具有可移植性。
即使如此,在您的软件中允许用户选择数据库位置,您也可以正常工作。例如,在磁盘上保存信息,以 .ini 文件格式保存,允许每台计算机都可以读取相同的设置。
如果您期望每台计算机与数据库连接的字符串不同,则可以将设置保存到 %appdata%
目录中。当用户稍后重新插入USB存储设备时,他的设置仍将存在,并且不会向其他用户显示这些相同的设置。
然而,第二种方法的缺点是用户无法自动“卸载”并恢复写入到 %appdata%
的空间。然而,对于大多数私人商业应用程序来说,这并不是一个大问题。
编辑:如果您真正的问题是如何分发一个没有安装程序的应用程序,只需构建您的应用程序的 Release 版本,并在项目中查找 /bin/Release/
。将这些文件复制到另一个位置,删除任何调试或不需要的文件,并确保您的所有依赖关系都已按顺序安装。
最简单的安装形式;使用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");
}
如果您只想连接到数据库,可以在不需要任何安装程序的情况下在EXE中完成。如何实现取决于数据库类型以及您是如何连接到该数据库的,但通常需要在EXE(或外部XML文件中)对一个连接字符串进行编码。这个连接字符串可能是由安装程序管理的。
您可以在这里找到有关使用C#构建第一个Windows应用程序的好教程: http://msdn.microsoft.com/en-us/library/360kwx3z.aspx
如果你不知道如何开始窗体应用程序或如何连接数据库等,有很多教程,你可以非常容易地在谷歌上找到它们;)
以下是一些示例:
与GUI相关:
GUI Windows Forms « C# / CSharp 教程
与数据库相关: