Rust应用程序的ClickOnce

2021-01-02 09:49:23

ClickOnce是在Windows上分发应用程序的一种很酷的分散式方法。我将演示如何使用ClickOnce分发Rust语言应用程序。该游戏使用Rust / WinRT在Windows运行时之上构建UI。 ClickOnce于2006年1月随.NET Framework 2.0一起提供。将近15年之后,宣布了具有改进的ClickOnce支持的.NET 5.0。一个简单的.NET 5.0应用程序用于启动捆绑游戏。

我在一个孤立的gh-pages分支中将应用程序发布到了GitHub Pa ges。对于GitHub存储库,此方法可能令人担忧。保持存储库较小的一种方法是不通过强制将历史记录保留在该分支中。我发布了Minesweeper.application文件和整个Application Files / Minesweeper_0_1_0_0文件夹。

Application Files文件夹包含所有带有.deploy扩展名的文件。为了避免由于行尾不同而产生的校验和验证问题,我添加了一个.gitattributes文件。

已发布的文件是从ClickOnce app.publish文件夹中复制的。可以通过双击Minesweeper.application在本地测试ClickOnce。只需单击Minesweeper.exe,即可​​在没有ClickOnce的情况下测试.NET启动器。单击minesweeper-rs.exe,可以在没有.NET启动器的情况下测试Rust应用程序。

我将通过ClickOnce发布所需的所有文件放在一个名为ClickOnce的文件夹中。用货物构建--release构建Rust应用程序后,我只需调用。\ ClickOnce \ build.ps1。它启动msbuild来构建.NET启动器,创建ClickOnce应用程序清单,创建ClickOnce部署清单,并对它们进行签名,从而在上面创建app.publish文件夹。目标随Visual Studio的任何版本一起提供,包括Visual Studio Build Tools。标记清单的目标尚不适用于dotnet msbuild,因此请坚持使用msbuild。在PowerShell中,我可以使用$ env:PATH将其添加到PATH环境变量中。

仅供参考,Visual Studio Build Tools可以使用winget获得。运行winget install Microsoft.VisualStudio.BuildTools。有几种安装Winget的方法,但是我通常只是从发行页面上的最新发行版中下载并启动最新的.appxbundle。如果需要,运行Visual Studio Installer应用程序将帮助您进行更新。

您可以手动构建ClickOnce清单,但是让MSBuild目标使用发布配置文件为您轻松完成。发布配置文件本身就是包含一系列属性和项的MSBuild文件。

ClickOnce \ Properties \ PublishProfiles \ ClickOnceProfile.pubxml是从Build> Visual Studio中的发布向导。我不确定最小的属性集是什么。

我将几个属性移到了特定于特定用户且不应提交的ClickOnceProfile.pubxml.user文件中。 InstallUrl是部署的基本URL。 ManifestCertificateThumbprint是我本地安装的代码签名证书的证书。

启动Rust应用程序的.NET应用程序是一个非常基本的Windows Form应用程序。

该项目文件也很简单,但是花一些时间阅读.NET 5.0如何改变了事情,尤其是TargetFramework:

Windows桌面API(包括Windows窗体,WPF和WinRT)仅在面向net5.0-windows时可用。您可以指定操作系统版本,例如net5.0-windows7或net5.0-windows10.0.17763.0(适用于Windows October 2018 Update)。如果要使用WinRT API,则需要定位Windows 10版本。

我将Configuration和PublishProfile属性添加到了该项目文件,但是您将它们保留并传递给它们,或者通过将它们作为参数传递给命令行中的msbuild来覆盖它们,例如/ p:Configuration = Release和/ p:PublishProfile = ClickOnceProfile。

我很高兴看到Rust被更多地用于桌面应用程序开发。 Rust / WinRT和gtk-rs等项目使Rust可以更轻松地访问桌面应用程序开发。我期待为WinUI 3和GTK 4.0提供更好的支持。即使ClickOnce是.NET组件,它也可以用于分发Rust中内置的桌面应用程序。