[英]Publishing an installed windows application using click once
我们通过*.msi
文件安装了Windows应用程序(例如MyApp),并且每当有较新版本发布时,我们都需要对其进行更新。 我们想要做到的是:
1)我们通过使用安装文件将新版本的程序安装到服务器位置。
2)我们将安装的文件从C:\\ Program Files(x86)\\ MyApp复制到服务器上的共享文件夹(假设为MyServer \\ C:\\ MyApp)。
3)我们创建一个click once
应用程序,并希望让我们的用户提供链接,以便他们可以使用发布位置(MyServer \\ C:\\ MyApp)中的单击一次来安装和更新其程序(MyApp)。
那么,在那种情况下我们该怎么做呢? 我认为我们在Visual Studio 2015中创建了一个Windows Form
项目,但对下一步没有任何想法。 任何帮助将不胜感激。
这样您就可以将文件保存在服务器上了。 当实际更新发生时,您需要将所有文件下载到用户计算机上的安装目录中。 为了简化此操作,请从这些文件创建一个存档(.zip) 。 我们还将需要一个文件,其中包含已归档的应用程序的版本号。 因此,创建一个简单的文本文件(.txt) 。 文件的内容应仅是版本号 (例如:1000)。 此文件中的版本号不能为负或0。 如果要更新 ,请创建一个新的存档 (.zip)文件,并在文本文件中增加版本号 。
现在魔术开始了。 创建一个Visual Studio Windows窗体应用程序 。 该应用程序在执行时将检查更新,并在需要时下载它们,然后运行该应用程序(位于服务器上)。 为此,我们将需要一种告诉安装哪个版本的方法。 为此,我们将使用“ 应用程序设置” 。 创建一个名为“ version”的设置,它是一个整数 。 该值必须为0 ,这意味着从未安装过该应用程序(服务器之一)。
当应用程序启动时,我们将使用“ C#示例”在服务器上的“ version.txt”中下载字符串 :
WebClient客户端=新的WebClient();
字符串Latest_String = client.DownloadString(“ MyServer.net/version.txt”);
然后将字符串转换为整数,以便我们可以将其与应用程序设置中存储的版本进行比较 (C#示例):
int最新= Int32.Parse(latest_string);
然后,我们使用一个简单的if语句(C#示例):
if(Properties.Settings.Default.version <Latest){
//更新可用
}其他{
//提供程序并跳过更新
}
如果更新可用,我们要下载存档 , 将其解压缩 到午餐位置并执行程序 。
下载(C#示例):
使用(var client = new WebClient(){
client.DownloadFile(“ MyServer.net/Update.zip”,“ Update.zip”);
}
为了进行提取,我们使用ZipFile类( 帮助链接 )(C#示例):
字符串目录= Environment.CurrentDirectory +“ MyApp”;
if(Directory.Exists(path)){
Directory.Delete(dir,true);
}
ZipFile.ExtractToDirectory(“ Update.zip”,dir);
我们需要更新版本设置,因为应用程序已更新,并且我们不想持续下载(C#示例):
Properties.Settings.Default.version =“最新”;
Properties.Settings.Default.Save();
启动该过程(C#示例):
流程myProcess = new Process();
myProcess.StartInfo.FileName =“ dir +” run.exe“;
myProcess.Start();
最后,我们关闭应用程序并运行该应用程序(C#示例):
Environment.Exit(0);
我尽力解释了这一点,希望对您有所帮助。 我今年15岁,英语不是我的母语,所以对答案中的错误感到抱歉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.