繁体   English   中英

单击一次发布已安装的Windows应用程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM