适用于任何平台的 WPF .net Core 3.1 应用程序部署工具?

Posted

技术标签:

【中文标题】适用于任何平台的 WPF .net Core 3.1 应用程序部署工具?【英文标题】:WPF .net Core 3.1 application deployment tools for any platform? 【发布时间】:2021-11-14 14:09:10 【问题描述】:

我有一个实用程序编辑器应用程序,它与另一个主应用程序一起使用。主要应用程序通常是 Windows EXE,但也有 Unix 和 Mac 版本。此应用程序是由另一家公司为我们编写的。它不是 C#。

我们有一个与主应用程序配合使用的实用程序编辑器程序。最初的版本是一个 WinForms 应用程序,但它显示它已经过时并且某些功能不再适用于今天的 Windows。因此,我们正在使用 .NET Core 3.1 用 WPF 重写该应用程序,希望如果可能的话,我们将来也可以为 Unix 和 Mac 编译它。他们希望它成为一个独立的应用程序,以便不同大学和其他组织的学生更轻松地使用它。 Click-Once、MSIX 和复制更大的文件夹不是选项。他们想要一个独立的 EXE,他们最初可以为 32 位和 64 位 Windows 上传/分发,通常以 DVD 形式发送。

但是我遇到了 WPF 的构建问题。我曾尝试发布应用程序和 VS Installer 插件,但都失败了,这似乎是互联网上的常见抱怨。出于某种原因,您总是以 DLL 应用程序而不是 EXE 结束,并且它无法运行,而且根据 Internet 上的讨论,我并不孤单。我在想这与 .NET Core 有关,但我对此知之甚少,不知道如何解决它。一篇文章暗示 DLL 可能是可移植部分,然后您需要一个特定于平台的模块来运行它???我误会了吗?如果是这样,我如何创建一个?

我现在正在研究第三方工具。看起来 Wix 可能值得探索,但学习曲线被标榜为很大,所以老板很紧张。我也不确定 Unix 或 Mac 版本。这些会再次成为不同的工具吗? 据此,它可能是,但这是 2 岁: How to build installers for .NET Core app?

是否有人成功构建了一个实际安装可用应用程序的 WPF .NET Core 3.1 setup.EXE?如果是这样,您使用了哪些工具?您能就我可能遗漏的内容提供任何建议吗?我可以获取 setup.exe,但它安装的应用程序无法使用。

如果您能提供任何帮助,我将不胜感激。多年来,这个社区一直对我很有帮助,我通常可以从以前的问题中找到答案,而无需自己提出任何问题。所以我没有评分。但我已经使用了 10 多年了!请不要这样对我?但这一次我被难住了。可能只是我对 .NET Core(其中的第一个应用程序)太陌生,而且我没有正确的搜索词。我通常是 Web 开发人员。但是网络在这里不是一个选项。

感谢您的考虑, MLY

【问题讨论】:

【参考方案1】:

有点晚了,你可能已经想出了一个解决方案,但对于其他人来说,你想知道。 一种方法是使用 ClickOnce。 如果使用 Visual Studios,您应该能够右键单击您的主项目并选择“发布”。然后您应该能够单击“新建”发布配置文件。从出现的选项中,您可以选择“ClickOnce”,然后您应该会看到一些设置。对您来说,最重要的是其中两个选项卡,“安装位置”和“配置”。在前者中,您可以选择“来自 cd/dvd 或 USB”,因为您提到这是一种交付您需要的可执行文件的方法。 在后者中,您可以选择“部署模式”为“自包含”,并在“文件发布选项”下选择“生成单个文件”。

这最终会为您的应用程序生成一个可以作为独立应用程序使用的 EXE。 请注意,使用 VS19 时有一些问题似乎不允许这种情况发生https://github.com/dotnet/sdk/issues/11351 但是使用 VS22 这似乎不是问题,我至少在那里没有体验过。

更多信息 https://docs.microsoft.com/en-us/dotnet/desktop/wpf/app-development/deploying-a-wpf-application-wpf?view=netframeworkdesktop-4.8 https://docs.microsoft.com/en-us/visualstudio/deployment/quickstart-deploy-using-clickonce-folder?view=vs-2022

另外,仅供参考,WPF 应用程序只能在 Windows 上运行,因此您根本无法在 Mac 或 Unix 上部署它们。社区支持将 Xamarin.Forms 与 WPF 结合使用,但如果您需要多操作系统部署,则不应首先使用 WPF 开发此应用程序。

【讨论】:

以上是关于适用于任何平台的 WPF .net Core 3.1 应用程序部署工具?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 应用程序可以在带有 .Net Core 3 的 Linux 或 Mac 中运行吗?

.Net Core 3.0 关于Windows Form和WPF的全面支持

适用于 ASP.NET 开发者的 ASP.NET Core

在 .NET Core 控制台应用程序中获取对 System.Printing 命名空间的访问权限

通过 IIS ARR 的客户端关联/粘性会话是不是适用于 ASP.NET Core 3+/.NET 5?

.NET Core 3 使用 WinUI