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。有關更多信息,請參閱許可證。