首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从单个MSIXes创建相关集?

如何从单个MSIXes创建相关集?
EN

Stack Overflow用户
提问于 2021-10-15 13:27:47
回答 1查看 109关注 0票数 0

让我们假设我已经创建了两个MSIX包,它们是相互独立的。但是,我想把它们变成一个“相关集”;我希望其中一个是我的“主包”,另一个是与主包一起安装的“可选包”。我使用MakeAppx.exe来解压缩我的机器上的两个MSIX包,我正在查看文件系统中的两个包,特别是AppxManifest.xml文件。

我知道,对于可选的包,MainPackageDependency元素(来自XML命名空间http://schemas.microsoft.com/appx/manifest/uap/windows10/3)可以添加到AppxManifest.xml中的“依赖项”元素中。但是,我认为,为了使这两个包形成一个“相关集”,我还需要向主包的AppxManifest.xml添加一些内容。我不知道需要在其中添加什么。

这个问题的重点是我需要对主包做什么修改。一旦做出了这些修改,就需要重新打包MSIXes并对其进行签名。你可能认为我知道如何完成这些步骤是理所当然的。

MSIXes的目的是侧加载(而不是通过Microsoft分发),它们都包含可执行文件。

我试过的

我只试过修改包,这意味着是“可选的包”在相关的集合。这样做的结果是,当我尝试安装两个包时,主包成功安装,但在试图安装可选包时,会显示以下错误消息:

相关集无法更新,因为更新的集无效。相关集中的所有包必须同时更新。(0x80003d17)

以下错误出现在Windows错误日志中:

带有百年纪念内容OptionalPackageName_21.4.0.0_x86__0rk1t7bybtkaw的可选包不在相关集中,它必须位于由百年纪念主包MainPackageName_0rk1t7bybtkaw指定的相关集合中。

我不知道“百年纪念内容”或“百周年主要内容”是什么意思,在网上搜索也没有成功。

我尝试将一个PackageDependency元素添加到主包的Dependencies文件中的Dependencies元素中,将Optional属性(来自XML命名空间http://schemas.microsoft.com/appx/manifest/uap/windows10/6)设置为"true“。这产生了与上述相同的结果。据我理解,这不是正确的方法,因为PackageDependency元素用于声明所谓的“框架依赖”,这是一种不同类型的依赖关系。

我找到了一个Microsoft文档页面,该页面建议名为"AppxBundleManifest.xml“的文件可能是获取有关可选包的信息的工具。因此,我尝试将名为"AppxBundleManifest.xml“的文件添加到主包中,其内容以Visual在尝试处理从GitHub下载的示例项目时为我创建的同名文件的内容为模型。但是,该文件在运行时不会被MakeAppx.exe打包;它会打印以下消息:

MakeAppx :警告:忽略内存占用文件"AppxMetadata\AppxBundleManifest.xml“。

我不知道“占用文件”一词是什么意思,也不知道为什么要忽略该文件。

我尝试过浏览微软的AppxManifest.xml文件模式文档,但是我没有注意到任何有用的东西。

我尝试过安装付费软件产品"Advanced“的试用版,因为它自夸支持此功能,我想我可能可以从它生产的MSIXes中安装。但是,虽然我可以使用这个软件产品创建可选的包,但我不知道如何创建主包。供应商有在线文档,但据我所知,自编写该文档以来,他们已经更改了应用程序GUI的相关部分,而且我无法确定相关选项在我下载的版本中的位置。具体来说,此页似乎建议“构建”小部件(列在“包定义”类别下)应该包含一个“可选包”选项卡;实际上,那里没有“可选包”选项卡。

我已经尝试过使用微软在GitHub上提供的GitHub。然而,虽然我设法使它“构建”,但我没有成功地让它创建实际的MSIX文件。它确实创建了AppxManifest.xml文件,但是这些文件中没有任何明显是我自己的项目中缺少的文件元素。

为什么我不使用Visual来创建包?

我们希望使用WiX来创建MSIXes。不幸的是,WiX扩展包还不支持可选的包或相关集。我希望我们可以对WiX生成的WiX(例如,在AppxManifest.xml文件中编辑XML )进行一些调整,以满足我们的需要。

EN

Stack Overflow用户

回答已采纳

发布于 2021-10-17 16:36:22

这里出现的问题是,我错误地认为相关集可以以单独的包的形式创建,使用MakeAppx编译。实际上,您需要做的是分两个步骤使用MakeAppx:

  1. 使用MakeAppx创建包。
  2. 再次使用MakeAppx从您已经创建的包中创建一个包。(使用“映射文件”指定标题[ExternalPackages]下的一个或多个可选包)

如果您在代码之间阅读,可以从Microsoft文档中收集到这一点,但在我看到的任何地方都没有明确解释。

如果您在讨论此主题之前已经阅读过其他与MSIX相关的主题,那么很容易掩饰创建包的必要性,因为在其他文档中,捆绑包的动机是将其合并成一个单一单元、针对不同体系结构的包的多个版本。如果这与你无关,那么你可能会认为你可以无视它们。嗯,它们可以用于这个目的--但是如果您想要创建相关集,也可以(确实必须)使用它们。您可以有一个包,它只有一个必需的包,而且只能用于一个体系结构。

另一个问题是:要创建一个m660包,需要一个最低的Windows版本(我认为是10.0.18362.0)。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69585472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档