Electron Windows 商店指南

2023-02-16 17:16 更新

在 Windows 10 中,一些不錯(cuò)的舊 win32 程序迎來(lái)了一個(gè)新朋友:通用 Windows 平臺(tái)。 新的 ?.appx? 格式不僅啟用了許多新的強(qiáng)大的 API,如 Cortana 或推送通知,而且通過 Windows 應(yīng)用商店,也同時(shí)簡(jiǎn)化了安裝和更新。

Microsoft 開發(fā)了一個(gè)工具,將 Electron 應(yīng)用程序編譯為 .appx 軟件包,使開發(fā)人員能夠使用新應(yīng)用程序模型中的一些好東西。 本指南解釋了如何使用它 - 以及 Electron AppX 包的功能和限制。

背景和要求

Windows 10 的 "周年更新" 能夠運(yùn)行 win32 .exe 程序并且它們的虛擬化文件系統(tǒng)和注冊(cè)表跟隨一起啟動(dòng)。 兩者都是通過在 Windows 容器中運(yùn)行應(yīng)用程序和安裝器編譯后創(chuàng)建的,允許 Windows 在安裝過程中正確識(shí)別操作系統(tǒng)進(jìn)行了哪些修改。 將可執(zhí)行文件和虛擬文件系統(tǒng)與虛擬注冊(cè)表配對(duì), 允許 Windows 啟用一鍵安裝和卸載。

此外,exe 在 appx 模型內(nèi)啟動(dòng) - 這意味著它可以使用通用 Windows 平臺(tái)可用的許多 API。 為了獲得更多的功能,Electron 應(yīng)用程序可以與一個(gè)看不見的 UWP 后臺(tái)任務(wù)配合使用,它與 exe 一起啟動(dòng),作為后臺(tái)運(yùn)行任務(wù)的接收器,接收推送通知或與其他 UWP 應(yīng)用程序通信 。

要編譯任何現(xiàn)有的 Electron 應(yīng)用程序,請(qǐng)確保滿足以下要求:

  • Windows 10及周年更新 (2016年8月2日發(fā)布的)
  • Windows 10 SDK, 這里下載
  • 最新的 Node 4 (運(yùn)行 node -v 來(lái)確認(rèn))

然后, 安裝 electron-windows-store CLI:

npm install -g electron-windows-store

步驟 1: 打包你的 Electron 應(yīng)用程序

打包應(yīng)用程序使用 electron-packager (或類似工具). 確保在最終的應(yīng)用程序中刪除不需要的 node_modules, 因?yàn)檫@些你不需要模塊只會(huì)額外增加你的應(yīng)用程序的大小.

結(jié)構(gòu)輸出應(yīng)該看起來(lái)大致像這樣:

├── Ghost.exe
├── LICENSE
├── content_resources_200_percent.pak
├── content_shell.pak
├── d3dcompiler_47.dll
├── ffmpeg.dll
├── icudtl.dat
├── libEGL.dll
├── libGLESv2.dll
├── locales
│   ├── am.pak
│   ├── ar.pak
│   ├── [...]
├── node.dll
├── resources
│   └── app.asar
├── v8_context_snapshot.bin
├── squirrel.exe
└── ui_resources_200_percent.pak

步驟 2: 運(yùn)行 electron-windows-store

從提權(quán)的 PowerShell(用管理員身份運(yùn)行它) 中, 以所需的參數(shù)運(yùn)行 electron-windows-store,傳遞輸入和輸出目錄,應(yīng)用程序的名稱和版本,以及確認(rèn) node_modules 應(yīng)該是扁平的。

electron-windows-store `
    --input-directory C:\myelectronapp `
    --output-directory C:\output\myelectronapp `
    --package-version 1.0.0.0 `
    --package-name myelectronapp

一旦執(zhí)行,工具就開始工作:它接受您的 Electron 應(yīng)用程序作為輸入,展平 node_modules。 然后,它將應(yīng)用程序歸檔為 app.zip。 使用安裝程序和 Windows 容器,該工具創(chuàng)建一個(gè)“擴(kuò)展的” AppX 包 - 包括 Windows 應(yīng)用程序清單 (AppXManifest.xml)以及虛擬文件系統(tǒng)和輸出文件夾中的虛擬注冊(cè)表。

當(dāng)創(chuàng)建擴(kuò)展的 AppX 文件后,該工具使用 Windows App Packager(MakeAppx.exe)將磁盤上的這些文件創(chuàng)建為單文件 AppX 包。 最后,該工具可用于在計(jì)算機(jī)上創(chuàng)建可信證書,以簽署新的 AppX 包。 使用簽名的 AppX 軟件包,CLI也可以自動(dòng)在您的計(jì)算機(jī)上安裝軟件包。

步驟 3: 使用 AppX 包

為了運(yùn)行您的軟件包,您的用戶將需要將 Windows 10 安裝“周年紀(jì)念更新” - 有關(guān)如何更新Windows的詳細(xì)信息可以在這里找到

與傳統(tǒng)的UWP應(yīng)用程序不同,打包應(yīng)用程序目前需要進(jìn)行手動(dòng)驗(yàn)證過程,您可以在這里申請(qǐng). 在此期間,所有用戶都能夠通過雙擊安裝包來(lái)安裝您的程序,所以如果您只是尋找一個(gè)更簡(jiǎn)單的安裝方法,可能不需要提交到商店。 在受管理的環(huán)境中(通常是企業(yè)), Add-AppxPackage  PowerShell Cmdlet 可用于以自動(dòng)方式安裝它。

另一個(gè)重要的限制是編譯的 AppX 包仍然包含一個(gè) win32 可執(zhí)行文件,因此不會(huì)在 Xbox,HoloLens 或 Phones 中運(yùn)行。

可選: 使用 BackgroundTask 添加 UWP 功能?

您可以將 Electron 應(yīng)用程序與不可見的 UWP 后臺(tái)任務(wù)配對(duì),以充分利用 Windows 10 功能,如推送通知,Cortana 集成或活動(dòng)磁貼。

如何使用 Electron 應(yīng)用程序通過后臺(tái)任務(wù)發(fā)送 Toast 通知和活動(dòng)磁貼, 請(qǐng)查看微軟提供的案例.

可選: 使用容器虛擬化進(jìn)行轉(zhuǎn)換

要生成 AppX 包,electron-windows-store CLI 使用的模板應(yīng)該適用于大多數(shù) Electron 應(yīng)用程序。 但是,如果您使用自定義安裝程序,或者您遇到生成的包的任何問題,您可以嘗試使用 Windows 容器編譯創(chuàng)建包 - 在該模式下,CLI 將在空 Windows 容器中安裝和運(yùn)行應(yīng)用程序,以確定應(yīng)用程序正在對(duì)操作系統(tǒng)進(jìn)行哪些修改。

在第一次運(yùn)行 CLI 之前,您必須安裝 “Windows Desktop App Converter” 。 這將需要幾分鐘,但不要擔(dān)心 - 你只需要這樣做一次。 從這里下載 Desktop App Converter 您將得到兩個(gè)文件: DesktopAppConverter.zip 和 BaseImage-14316.wim.

  1. 解壓 DesktopAppConverter.zip. 打開提權(quán)的 PowerShell (用"以管理員權(quán)限運(yùn)行"打開, 確保您的系統(tǒng)執(zhí)行策略允許我們通過調(diào)用 Set-ExecutionPolicy bypass 來(lái)運(yùn)行我們想要運(yùn)行的一切).
  2. 然后, 通過調(diào)用 .\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim, 運(yùn)行 Desktop App Converter 安裝,并傳遞 Windows 基本映像的位置 (下載的 BaseImage-14316.wim).
  3. 如果運(yùn)行以上命令提示您重新啟動(dòng),請(qǐng)重新啟動(dòng)計(jì)算機(jī),并在成功重新啟動(dòng)后再次運(yùn)行上述命令。

當(dāng)安裝成功后,您可以繼續(xù)編譯你的 Electron 應(yīng)用程序。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)