我所参与的项目不允许使用ClickOnce。我的老板希望程序看起来“真实”(包括安装程序等)。
我已经安装了Visual Studio 2012专业版,并尝试使用InstallShield安装程序,确实可以制作出漂亮的安装程序,但我不知道怎样使应用程序“自动更新”(即启动时检查是否使用了最新版本)。
我被要求对代码进行微小修改——将加法改为减法,但我不希望人们每次像这样进行小的更改时都必须卸载旧版本并重新安装新版本。
我如何才能使应用程序检查更新并安装它们?或者这不可能(或不容易)吗?
我所参与的项目不允许使用ClickOnce。我的老板希望程序看起来“真实”(包括安装程序等)。
我已经安装了Visual Studio 2012专业版,并尝试使用InstallShield安装程序,确实可以制作出漂亮的安装程序,但我不知道怎样使应用程序“自动更新”(即启动时检查是否使用了最新版本)。
我被要求对代码进行微小修改——将加法改为减法,但我不希望人们每次像这样进行小的更改时都必须卸载旧版本并重新安装新版本。
我如何才能使应用程序检查更新并安装它们?或者这不可能(或不容易)吗?
已经有很多关于这个问题的提问了,所以我会把你引荐给那些问题。
为了防止需要卸载,您需要确保在每次发布时使用相同的升级代码,但更改产品代码。 这些值位于Installshield项目属性中。
一些参考:
#region check and download new version program
bool bSuccess = false;
IAutoUpdater autoUpdater = new AutoUpdater();
try
{
autoUpdater.Update();
bSuccess = true;
}
catch (WebException exp)
{
MessageBox.Show("Can not find the specified resource");
}
catch (XmlException exp)
{
MessageBox.Show("Download the upgrade file error");
}
catch (NotSupportedException exp)
{
MessageBox.Show("Upgrade address configuration error");
}
catch (ArgumentException exp)
{
MessageBox.Show("Download the upgrade file error");
}
catch (Exception exp)
{
MessageBox.Show("An error occurred during the upgrade process");
}
finally
{
if (bSuccess == false)
{
try
{
autoUpdater.RollBack();
}
catch (Exception)
{
//Log the message to your file or database
}
}
}
#endregion
一个业余的方式是
在Main()函数中,将执行程序文件 .exe 重命名为其他名称, 检查其创建日期和时间以及更新后的文件日期和时间,并复制到应用程序文件夹。
//Rename he executing file
System.IO.FileInfo file = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
System.IO.File.Move(file.FullName, file.DirectoryName + "\\" + file.Name.Replace(file.Extension,"") + "-1" + file.Extension);
然后进行逻辑检查并将新文件复制到执行文件夹
xcopy \\IP address\folder_share_name\*.* /s /y /d /q
start "label" /b "youraplicationname.exe"
现在,您可以使用 Windows 10 中的 AppInstaller 机制来打包您的应用程序为 MSIX 包或软件包,以便进行应用程序交付。
有了它,您无需考虑安装程序(如果您的应用程序不使用很多依赖项),后台更新等等。这比 ClickOnce 好得多,由于别名,命令行使用非常顺畅,更新不会干扰用户,并且也可用于后台应用程序。
安装体验也更好:用户只需在 HTML 上单击一个按钮,Windows 就会自动安装该应用程序。
它并不是超级简单的,我会说比 ClickOnce 更复杂,但不像 Wix 那么难。
官方指南不支持.NET Core或.NET 5应用程序,因此您可以参考本文或这个优秀的视频。这个网站也包含了许多有用的信息。