应用包生成工具 (MakeAppx.exe) - Win32 apps

365体育手机版下载安装 📅 2025-09-06 05:45:33 👤 admin 👀 5649 ❤️ 376
应用包生成工具 (MakeAppx.exe) - Win32 apps

注意

有关使用此工具的 UWP 指南,请参阅使用 MakeAppx.exe 工具创建应用包。

应用包生成工具 (MakeAppx.exe) 从磁盘上的文件创建应用包,或将应用包中的文件提取到磁盘。 从 Windows 8.1 开始,应用包生成工具还会从磁盘上的应用包创建应用包捆绑包,或者从应用包捆绑包中提取应用包到磁盘。 它包含在 Microsoft Visual Studio 中,以及适用于 Windows 8 的 Windows 软件开发工具包(SDK) 或适用于 Windows 8.1 及更新版本的 Windows 软件开发工具包 (SDK) 中。 访问面向开发人员的下载内容获取它们。

MakeAppx.exe 工具通常位于操作系统版本特定的位置:

C:\Program Files (x86)\Windows Kits\10\bin\makeappx.exe

其中, = x86、x64、arm、ar64 或 chpe。 或者它可能位于:

C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe

使用目录结构创建包

使用映射文件创建包

使用 SignTool 对包进行签名

从包中提取日志

使用目录结构创建包捆绑包

使用映射文件创建包捆绑包

从捆绑包中提取包

使用密钥文件加密包

使用全局测试密钥加密包

使用密钥文件解密包

使用全局测试密钥解密包

使用情况

使用应用包生成工具

注意

整个工具都支持相对路径。

使用目录结构创建包

将 AppxManifest.xml 放在包含应用的所有有效负载文件的目录的根目录中。 将为应用包创建一个相同的目录结构,并在部署时提取包时可用。

将所有文件放在单个目录结构中,根据需要创建子目录。

创建一个有效的包清单 AppxManifest.xml,并将其放在根目录中。

运行以下命令:

MakeAppx pack /dinput_directorypath/pfilepath.appx

使用映射文件创建包

创建有效的包清单 AppxManifest.xml。

创建映射文件。 第一行包含字符串 [Files],后跟的行在带引号的字符串中指定源(磁盘)和目标(包)路径。

[Files]

"C:\MyApp\StartPage.htm" "default.html"

"C:\MyApp\readme.txt" "doc\readme.txt"

"\\MyServer\path\icon.png" "icon.png"

"MyCustomManifest.xml" "AppxManifest.xml"

运行以下命令:

MakeAppx pack /fmapping_filepath/pfilepath.appx

使用 SignTool 对包进行签名

创建证书。 清单中列出的发布者必须与签名证书的发布者使用者信息匹配。 有关创建签名证书的更多信息,请参阅如何创建应用包签名证书。

运行 SignTool.exe 对包进行签名:

SignTool sign /a /v /fdhashAlgorithm/fcertFileNamefilepath.appx

hashAlgorithm 必须与打包应用时用于创建块映射的哈希算法匹配。 使用 MakeAppx 打包实用工具时,默认的 Appx 块映射哈希算法为 SHA256。 运行 SignTool.exe,指定 SHA256 作为文件摘要 (/fd) 算法:

SignTool sign /a /v /fd SHA256 /fcertFileNamefilepath.appx

有关如何对包签名的更多信息,请参阅如何使用 SignTool 对应用包进行签名。

从包中提取日志

运行以下命令:

MakeAppx unpack /pfile.appx /doutput_directory

已打开的包与已安装的包具有相同的结构。

使用目录结构创建包捆绑包

我们使用 bundle 包命令,通过从<内容目录>(包括子文件夹)添加所有包,在<输出捆绑包名称>处创建应用捆绑包。 如果<内容目录> 包含捆绑清单 AppxBundleManifest.xml,则会忽略它。

将所有包放在单个目录结构中,根据需要创建子目录。

运行以下命令:

MakeAppx bundle /dinput_directorypath/pfilepath.appxbundle

使用映射文件创建包捆绑包

我们使用 bundle 命令,通过添加<映射文件>中的包列表中的所有包,在<输出捆绑包名称>处创建应用包。 如果<映射文件>包含捆绑清单 AppxBundleManifest.xml,则会忽略它。

创建<映射文件>。 第一行包含字符串 [Files],后跟的行指定要添加到捆绑包的包。 每个包由一对带引号的路径描述,路径之间用空格或制表符分隔。 这对路径表示包的源(在磁盘上)和目标(在捆绑包中)。 所有目标包名称都必须具有 .appx 扩展名。

[Files]

"C:\MyApp\MyApp_x86.appx" "MyApp_x86.appx"

"C:\Program Files (x86)\ResPack.appx" "resources\resPack.appx"

"\\MyServer\path\ResPack.appx" "Respack.appx"

"my app files\respack.appx" "my app files\respack.appx"

运行以下命令:

MakeAppx bundle /fmapping_filepath/pfilepath.appxbundle

从捆绑包中提取包

运行以下命令:

MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

未打开的包与已安装的包具有相同的结构。

使用密钥文件加密包

创建密钥文件。 密钥文件必须以一行开头,该行包含字符串“[Keys]”,然后是描述用于加密包的密钥的行。 每个键由一对带引号的字符串描述,字符串之间用空格或制表符分隔。 第一个字符串表示密钥 ID,第二个字符串以十六进制形式表示加密密钥。

[Keys]

"0" "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"

运行以下命令:

MakeAppx.exe encrypt /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name.txt

输入包将使用提供的密钥文件加密为指定的加密包。

使用全局测试密钥加密包

运行以下命令:

MakeAppx.exe encrypt /ppackage_name.appx /epencrypted_package_name.eappx /kt

输入包将使用全局测试密钥加密为指定的加密包。

使用密钥文件解密包

创建密钥文件。 密钥文件必须以一行开头,该行包含字符串“[Keys]”,然后是描述用于加密包的密钥的行。 每个键由一对带引号的字符串描述,字符串之间用空格或制表符分隔。 第一个字符串表示 base64 编码的 32 字节密钥 ID,第二个字符串表示 base64 编码的 32 字节加密密钥。

[Keys]

"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU=" "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

运行以下命令:

MakeAppx.exe decrypt /ppackage_name.appx /epunencrypted_package_name.eappx /kfkeyfile_name.txt

输入包将使用提供的密钥文件解密为指定的未加密包。

使用全局测试密钥解密包

运行以下命令:

MakeAppx.exe decrypt /ppackage_name.appx /epunencrypted_package_name.eappx /kt

输入包将使用全局测试密钥解密为指定的未加密包。

使用情况

命令行参数 /p 总是必需的,或者 /d、/f 或 /ep。 请注意,/d、/f 和 /ep 互斥。

MakeAppx pack [options]/p/d

MakeAppx pack [options]/p/f

MakeAppx unpack [options]/p/d

MakeAppx bundle [options]/p/d

MakeAppx bundle [options]/p/f

MakeAppx unbundle [options]/p/d

MakeAppx encrypt [options]/p/ep

MakeAppx decrypt [options]/p/ep

命令行语法

以下是 MakeAppx 的命令行常用语法。

MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h/kf/kt/l/o/no/nv/v/pfn/?]

MakeAppx 打包或解包包中的文件,捆绑或解包捆绑中的包,或加密或解密指定输入目录或映射文件中的应用程序包或捆绑。 下面是适用于MakeAppx 包、MakeAppx 解包、MakeAppx 捆绑包、MakeAppx 解包、MakeAppx 加密或 MakeAppx 解密的参数列表。

/l

此选项用于本地化包。 对本地化包进行默认验证。 此选项仅禁用该特定验证,而不要求禁用所有验证。

/o

覆盖输出文件(如果存在)。 如果未指定此选项或 /no 选项,则会询问用户是否要覆盖文件。

不能将此选项与 /no 一起使用。

/no

防止覆盖已存在的输出文件。 如果未指定此选项或 /o 选项,则会询问用户是否要覆盖文件。

不能将此选项与 /o 一起使用。

/nv

跳过语义验证。 如果未指定此选项,则该工具将执行包的完整验证。

/v

启用到控制台的详细日志记录输出。

%>

显示帮助文本。

MakeAppx 包、MakeAppx 解包、MakeAppx 捆绑包、 MakeAppx 解包、MakeAppx 加密和 MakeAppx 解密是互斥命令。 以下是专门适用于每个命令的命令行参数:

MakeAppx pack [h]

创建包。

/halgorithm

指定创建块映射时使用的哈希算法。 下面是算法的有效值:

SHA256(默认值) SHA384 SHA512

不能将此选项与 unpack 命令一起使用。

MakeAppx unpack [pfn]

将指定包中的所有文件提取到指定输出目录。 输出与包具有相同的目录结构。

/pfn

指定以包全名命名的目录。 此目录是在提供的输出位置下创建的。 不能将此选项与 pack 命令一起使用。

MakeAppx unbundle [pfn]

将所有包解压缩到指定输出路径下的子目录中,该路径以包的全名命名。 输出具有与已安装的软件包相同的目录结构。

/pfn

指定一个使用包捆绑包全名命名的目录。 此目录是在提供的输出位置下创建的。 不能将此选项与 bundle 命令一起使用。

MakeAppx encrypt [kf, kt]

在指定的输出包处从指定的输入应用包创建加密的应用包。

/kf

使用指定密钥文件中的密钥对包或捆绑包进行加密。 不能将此选项与 kt 一起使用。

/kt

使用全局测试密钥对包或捆绑包进行加密。 不能将此选项与 kf 一起使用。

MakeAppx decrypt [kf, kt]

从指定输出包处的指定输入应用包创建未加密的应用包。

/kf

使用指定密钥文件中的密钥解密包或捆绑包。 不能将此选项与 kt 一起使用。

/kt

使用全局测试密钥解密包或捆绑包。 不能将此选项与 kf 一起使用。

MakeAppx 执行的语义验证

MakeAppx 执行有限的语义验证,旨在捕捉最常见的部署错误,并帮助确保应用包有效。

此验证可用于确保:

应用包中包含包清单中引用的所有文件。

应用程序没有两个完全相同的密钥。

应用程序不会注册此列表中禁止的协议:SMB、FILE、MS-WWA-WEB、MS-WWA。

此语义验证不完整,并且不能保证 MakeAppx 构建的包是可安装的。

🍵 相关养生推荐

如何选择合适的国贸ERP软件来提升企业管理效率?
365体育手机版下载安装

如何选择合适的国贸ERP软件来提升企业管理效率?

📅 08-24 👀 335
12 条行之有效的建议,教你如何捍卫自己并获得应得的东西
怎么无限注册365游戏账号

12 条行之有效的建议,教你如何捍卫自己并获得应得的东西

📅 07-19 👀 2819
魔兽世界 在拍卖行里竞标后需要等多长时间才能得到物品?
怎么无限注册365游戏账号

魔兽世界 在拍卖行里竞标后需要等多长时间才能得到物品?

📅 07-15 👀 8045
墨西哥世界杯26人名单公布
365体育手机版下载安装

墨西哥世界杯26人名单公布

📅 08-21 👀 8991
七匹狼 男士内裤
365bet体育投注地址

七匹狼 男士内裤

📅 08-18 👀 8605
技能说明不会告诉你的事 锤石技能全揭秘
365bet体育投注地址

技能说明不会告诉你的事 锤石技能全揭秘

📅 08-16 👀 9388