【问题标题】:MSIX add prerequisites similar to ClickOnceMSIX 添加类似于 ClickOnce 的先决条件
【发布时间】:2021-12-22 11:50:54
【问题描述】:

我们有一个较旧的 ClickOnce 安装程序,适用于 Windows 应用程序,该安装程序具有来自第 3 方供应商的 Setup.exe 文件的先决条件。 (确切地说是 webvew2)...
ClickOnce 安装程序多年来一直运行良好,当它首次安装我们的 Windows 应用程序时,它还会通过运行其 Setup.exe 作为先决条件来安装第三方供应商应用程序。

现在我们想从 ClickOnce 迁移到 MSIX。
创建 Windows 应用程序打包项目非常简单,只需将我们的 Windows 应用程序添加为项目引用,但我们似乎无法弄清楚如何在新的 Windows 应用程序打包项目中添加第 3 方 Setup.exe 作为先决条件/依赖项。
以下文章讨论了编辑“appinstaller”文件,使其可以包含“OptionalPackages”,但这似乎只适用于“MainPackage”,但我的 appinstaller 文件有“MainBundle”。
https://www.syncfusion.com/succinctly-free-ebooks/msix-succinctly/distribute-your-msix-packages
这篇文章谈到了使用 desktop6:InstallActions,但它说“这个元素目前仅用于桌面 PC 游戏......”。
https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-desktop6-installactions

此外,我们尝试添加到 MSIX 的“引导程序”是 Microsoft WebView2。
https://developer.microsoft.com/en-us/microsoft-edge/webview2/
他们确实有关于 Wix 和 VS 安装程序的部署示例,但在 MSIX 上没有。
https://github.com/MicrosoftEdge/WebView2Samples#webview2-deployment

我已经阅读了很多有关 MSIX 文档的文章,但似乎找不到关于 3rd 方依赖项的好示例。
https://docs.microsoft.com/en-us/windows/msix/

我想我遗漏了一些东西,因为这基本上是 ClickOnce 中的复选框。
知道如何添加第 3 方 Setup.exe 作为依赖项,以便与我们的应用程序一起安装吗?

【问题讨论】:

    标签: clickonce webview2 msix


    【解决方案1】:

    MSIX 仅处理其他 MSIX/APPX 依赖项,您不能添加其他类型的包 (EXE/MSI/CO)。

    在 APPXManifest 文件中声明依赖项时,必须指定以下详细信息:

    1. 名称:应用程序的名称(例如 Firefox)
    2. 发布者:应用的发布者
    3. MinVersion:要安装 MSIX 的系统上必须存在的依赖项的最低版本,声明为 Major.Minor.Build.Revision

    您还可以使用 uap6:Optional="true" 元素将依赖项声明为可选。如果此元素未放在清单中,则如果未找到系统上安装的依赖项,则主包的安装将失败。如果应用程序在 Microsoft Store 中可用,则 MSIX 应用程序首先从 MS Store 下载依赖项并安装它,然后继续安装主 MSIX 应用程序。

    在您的情况下,WebView2 在商店中不可用,这意味着您不能将其声明为依赖项。 正如 Reily 上面提到的,您还可以考虑将 setup.exe 打包到 MSIX 中并使用 PowerShell 脚本在您拥有的 MSIX 应用程序的第一次运行期间触发一次(请记住,第一次运行必须以管理员权限执行),但不幸的是,这不是一个完美的场景。

    【讨论】:

    • 据我了解,来自 MSIX 内部的 PowerShell 脚本需要 ExecutionPolicy RemoteSigned,这不是我可以要求我的客户在他们的计算机上执行的操作。 docs.microsoft.com/en-us/windows/msix/psf/… 遗憾的是,在安装先决条件方面,MSIX 甚至没有接近 ClickOnce。
    【解决方案2】:

    我相信 MSIX 没有很好的方法来处理这样的依赖项。 Some advice from the WebView2 team:

    目前缺乏对 WebView2 的 Store/MSIX 支持,因为我们目前正在处理同一类别但具有更高优先级的问题......但我们稍后会到达那里。

    如果您是 Win32 完全信任的商店应用或 MSIX 应用,您现在可以做的一件事是,如果尚未安装运行时,您可以从我们的 CDN 下载安装程序(或使用您的 MSIX 包),然后在应用首次启动期间调用它来安装运行时。这需要提升,因为 WebView2 目前只能在每个系统中安装。

    祝你好运。根据我的经验,MSIX 的文档记录很差,并且对“快乐路径”之外的情况的支持也很差。我希望你能够让它工作。

    【讨论】:

    • 感谢您的链接。我仍然找不到关于这部分的好文章“将安装程序与您的 MSIX 包一起打包,然后在应用程序首次启动期间调用它来安装运行时”。有人如何用他们的 MSIX 包“打包”它?
    • 我可能会从MakeAppX开始;它是用于创建 MSIX 包的主要 CLI 工具。你给它文件,它会返回一个 MSIX 包。如果您在生成 MSIX 包时包含安装程序 exe,它会在安装后出现在您的 exe 旁边的磁盘上(在 C:\Program Files\WindowsApps\package_id 中)。然后你用 Process.Start 或类似的方法运行它。我没有亲自尝试过,但我认为它应该可以工作。如果这一切看起来很痛苦且不必要地困难:欢迎来到 MSIX ?
    猜你喜欢
    • 1970-01-01
    • 2015-11-22
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2020-02-05
    相关资源
    最近更新 更多