Electron-Windows-Store:一个 CLI,它获取 Electron 应用程序的打包输出,然后将其转换为 AppX 包。这允许您将 Electron 应用程序提交到 Windows 应用商店?您还可以将应用程序作为.appx
进行分发,而无需使用 Windows 应用商店,这样用户只需双击您的.appx
即可自动安装它。
要安装此命令行工具,请直接从 npm 获取:
npm install -g electron-windows-store
然后,配置您的 PowerShell:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
要将 Electron 应用程序转换为 AppX 包,请运行:
electron-windows-store --input-directory C:myelectronapp --output-directory C:outputmyelectronapp --package-version 1.0.0.0 --package-name myelectronapp
该工具支持两种创建AppX包的方法:使用手动文件复制操作,或使用Windows容器。第一个选项仅需要 Windows 10 SDK,而第二个选项还需要 Desktop App Converter。
在运行 Electron-Windows-Store CLI 之前,我们先确保满足所有先决条件。您将需要:
node -v
) 使用电子打包器(或类似的东西)打包应用程序。确保删除最终应用程序中不需要的node_modules。
输出应该大致如下所示:
├── Ghost.exe
├── LICENSE
├── content_resources_200_percent.pak
├── node.dll
├── pdf.dll
├── resources
│ ├── app
│ └── atom.asar
├── snapshot_blob.bin
├── [... and more files]
从提升的 PowerShell(“以管理员身份运行”)中,使用所需参数运行electron-windows-store
,传递输入和输出目录、应用程序的名称和版本。如果您不传递这些参数,我们只会向您询问。
electron-windows-store --input-directory C:myelectronapp --output-directory C:outputmyelectronapp --package-version 1.0.0.0 --package-name myelectronapp
这些都是 CLI 的选项:
-h, --help output usage information
-V, --version output the version number
-c, --container-virtualization Create package using Windows Container virtualization
-b, --windows-build Display Windows Build information
-i, --input-directory <path> Directory containing your application
-o, --output-directory <path> Output directory for the appx
-p, --package-version <version> Version of the app package
-n, --package-name <name> Name of the app package
--package-display-name <displayName> Display name of the package
--package-description <description> Description of the package
--package-background-color <color> Background color for the app icon (example: #464646)
-e, --package-executable <executablePath> Path to the package executable
-a, --assets <assetsPath> Path to the visual assets for the appx
-m, --manifest <manifestPath> Path to a manifest, if you want to be overwritten
-d, --deploy <true|false> Should the app be deployed after creation?
--identity-name <name> Name for identity
--publisher <publisher> Publisher to use (example: CN=developmentca)
--publisher-display-name <publisherDisplayName> Publisher display name to use
--make-pri <true|false> Use makepri.exe (you don't need to unless you know you do)
--windows-kit <windows-kit> Path to the Windows Kit bin folder
--dev-cert <dev-cert> Path to the developer certificate to use
--cert-pass <cert-pass> Password to use when signing the application (only necessary if a p12 certication is used)
--desktop-converter <desktop-converter> Path to the desktop converter tools
--expanded-base-image <base-image> Path to the expanded base image
--makeappx-params <params> Additional parameters for Make-AppXPackage (example: --makeappx-params "/l","/d")
--signtool-params <params> Additional parameters for signtool.exe (example: --makeappx-params "/l","/d")
--create-config-params <params> Additional parameters for makepri.exe "createconfig" (example: --create-config-params "/l","/d")')
--create-pri-params <params> Additional parameters for makepri.exe "new" (example: --create-pri-params "/l","/d")')
--verbose <true|false> Enable debugging (similar to setting a DEBUG=electron-windows-store environment variable)
你可以直接调用这个包。所有选项均对应于 CLI 选项,并且同样是可选的。有一个例外:您可以提供一个finalSay
函数,该函数将在调用makeappx.exe
之前执行。这允许您在我们将输出文件夹转换为包之前修改它。
const convertToWindowsStore = require ( 'electron-windows-store' )
convertToWindowsStore ( {
containerVirtualization : false ,
inputDirectory : 'C:\input\' ,
outputDirectory : 'C:\output\' ,
packageVersion : '1.0.0.0' ,
packageName : 'Ghost' ,
packageDisplayName : 'Ghost Desktop' ,
packageDescription : 'Ghost for Desktops' ,
packageExecutable : 'app/Ghost.exe' ,
assets : 'C:\assets\' ,
manifest : 'C:\AppXManifest.xml' ,
deploy : false ,
publisher : 'CN=developmentca' ,
windowsKit : 'C:\windowskit' ,
devCert : 'C:\devcert.pfx' ,
certPass : 'abcd' ,
desktopConverter : 'C:\desktop-converter-tools' ,
expandedBaseImage : 'C:\base-image.wim' ,
makeappxParams : [ '/l' ] ,
signtoolParams : [ '/p' ] ,
makePri : true ,
createConfigParams : [ '/a' ] ,
createPriParams : [ '/b' ] ,
protocol : "ghost-app" ,
finalSay : function ( ) {
return new Promise ( ( resolve , reject ) => resolve ( ) )
}
} )
Desktop App Converter 能够在 Windows 容器内转换期间运行安装程序和您的应用程序。这需要安装 Desktop App Converter,并且有更高级的要求。
appx
,否则请使用上述“文件复制”方法。
确保您的计算机能够运行容器:您需要 64 位 (x64) 处理器、硬件辅助虚拟化和二级地址转换 (SLAT)。您还需要 Windows 10 企业版。
在首次运行 CLI 之前,您必须设置“Windows Desktop App Converter”。这将需要几分钟的时间,但不用担心 - 您只需执行一次。从此处下载桌面应用程序转换器。您将收到两个文件: DesktopAppConverter.zip
和BaseImage-14316.wim
。
DesktopAppConverter.zip
。从提升的 PowerShell(使用“以管理员身份运行”打开)中,确保您的系统执行策略允许我们通过调用Set-ExecutionPolicy bypass
来运行我们想要运行的所有内容。.DesktopAppConverter.ps1 -Setup -BaseImage .BaseImage-14316.wim
传入 Windows .ase 映像(下载为BaseImage-14316.wim
)的位置。然后,使用--container-virtualization
标志运行electron-windows-store
!
执行后,该工具将开始工作:它接受您的 Electron 应用程序作为输入。然后,它将您的应用程序存档为app.zip
。该工具使用安装程序和 Windows 容器创建一个“扩展”AppX 包 - 包括 Windows 应用程序清单 ( AppXManifest.xml
) 以及输出文件夹内的虚拟文件系统和虚拟注册表。
一旦我们有了扩展的 AppX 文件,该工具就会使用 Windows App Packager ( MakeAppx.exe
) 从磁盘上的这些文件创建单文件 AppX 包。最后,该工具可用于在您的计算机上创建受信任的证书来签署新的 AppX 包。通过签名的 AppX 软件包,CLI 还可以自动在您的计算机上安装该软件包。
第一次运行此工具时,它需要了解一些设置。它只会询问您一次,并将您的答案存储在您的个人资料文件夹中的 . .electron-windows-store
文件中。您还可以在运行 CLI 时提供这些值作为参数。
{
"publisher" : " CN=developmentca " ,
"windowsKit" : " C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x64 " ,
"devCert" : " C: \ Tools \ DesktopConverter \ Certs \ devcert.pfx " ,
"desktopConverter" : " C: \ Tools \ DesktopConverter " ,
"expandedBaseImage" : " C: \ ProgramData \ Microsoft \ Windows \ Images \ BaseImage-14316 \ "
}
您可以将 Electron 应用与一个不可见的 UWP 助手配对,使您的 Electron 应用能够调用所有 WinRT API。在这里查看一个示例。
编译后的 AppX 包仍然包含 win32 可执行文件 - 因此不会在 Xbox、HoloLens 或手机上运行。
electron-windows-store
使用语义发布来自动化整个发布过程。为了合并 PR,请确保您的 PR 遵循提交指南,以便我们的机器人能够理解您的更改。该存储库使用默认的conventional-changelog
规则。
使用麻省理工学院许可证 (MIT) 进行许可;版权所有 (c) Felix Rieseberg 和 Microsoft Corporation。有关更多信息,请参阅许可证。