Windows 應用商店指南
在 Windows 10 中,舊有的 win32 可執行檔有了一個新的同胞:通用 Windows 平台。新的 .appx
格式不僅啟用了許多強大的新 API,例如 Cortana 或推播通知,而且透過 Windows 應用商店,還簡化了安裝和更新。
Microsoft 開發了一款工具,可將 Electron 應用程式編譯為 .appx
套件,讓開發人員可以使用新應用程式模型中的一些優點。本指南說明如何使用它,以及 Electron AppX 套件的功能和限制。
背景與需求
Windows 10 「年度更新」能夠執行 win32 .exe
二進位檔,方法是將它們與虛擬化的檔案系統和登錄檔一起啟動。兩者都是在編譯期間透過在 Windows 容器內執行應用程式和安裝程式來建立,讓 Windows 能夠精確識別在安裝期間對作業系統進行了哪些修改。將可執行檔與虛擬檔案系統和虛擬登錄檔配對,讓 Windows 能夠實現一鍵安裝和解除安裝。
此外,exe 會在 appx 模型內啟動,這表示它可以使用通用 Windows 平台上提供的許多 API。為了獲得更多功能,Electron 應用程式可以與一個隱形的 UWP 背景工作配對,該工作與 exe
一起啟動,有點像是作為一個助手啟動,以在背景執行任務、接收推播通知或與其他 UWP 應用程式通訊。
若要編譯任何現有的 Electron 應用程式,請確保您具備以下需求
- 搭載年度更新的 Windows 10 (於 2016 年 8 月 2 日發行)
- Windows 10 SDK,可在此處下載
- 至少 Node 4 (若要檢查,請執行
node -v
)
然後,前往並安裝 electron-windows-store
CLI
npm install -g electron-windows-store
步驟 1:封裝您的 Electron 應用程式
使用 @electron/packager
(或類似工具) 封裝應用程式。請務必移除您在最終應用程式中不需要的 node_modules
,因為任何您實際上不需要的模組都會增加應用程式的大小。
輸出結果應大致如下所示
├── 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:執行 electron-windows-store
從提升權限的 PowerShell (以「系統管理員身分」執行),使用必要的參數執行 electron-windows-store
,同時傳遞輸入和輸出目錄、應用程式的名稱和版本,以及確認應扁平化 node_modules
。
electron-windows-store `
--input-directory C:\myelectronapp `
--output-directory C:\output\myelectronapp `
--package-version 1.0.0.0 `
--package-name myelectronapp
一旦執行,該工具就會開始運作:它接受您的 Electron 應用程式作為輸入,扁平化 node_modules
。然後,它將您的應用程式封存為 app.zip
。該工具使用安裝程式和 Windows 容器,建立一個「展開的」AppX 套件,其中包括 Windows 應用程式資訊清單 (AppXManifest.xml
) 以及輸出資料夾內的虛擬檔案系統和虛擬登錄檔。
一旦建立展開的 AppX 檔案,該工具就會使用 Windows 應用程式封裝程式 (MakeAppx.exe
) 從磁碟上的這些檔案建立單一檔案 AppX 套件。最後,該工具可用於在您的電腦上建立受信任的憑證,以簽署新的 AppX 套件。有了簽署的 AppX 套件,CLI 也可以自動在您的機器上安裝該套件。
步驟 3:使用 AppX 套件
為了執行您的套件,您的使用者需要搭載所謂「年度更新」的 Windows 10,有關如何更新 Windows 的詳細資訊,請參閱此處。
與傳統的 UWP 應用程式相反,封裝的應用程式目前需要經過人工驗證程序,您可以在此處申請。同時,所有使用者都可以透過雙擊來安裝您的套件,因此如果您正在尋找更簡單的安裝方法,則可能不需要提交到應用商店。在受管理的環境 (通常是企業) 中,可以使用 Add-AppxPackage
PowerShell Cmdlet 以自動方式安裝它。
另一個重要的限制是,編譯後的 AppX 套件仍然包含 win32 可執行檔,因此無法在 Xbox、HoloLens 或手機上執行。
選用:使用 BackgroundTask 新增 UWP 功能
您可以將您的 Electron 應用程式與一個隱形的 UWP 背景工作配對,該工作可以充分利用 Windows 10 功能,例如推播通知、Cortana 整合或動態磚。
若要查看使用背景工作來傳送 Toast 通知和動態磚的 Electron 應用程式範例,請查看 Microsoft 提供的範例。
選用:使用容器虛擬化進行轉換
為了產生 AppX 套件,electron-windows-store
CLI 使用一個範本,該範本應適用於大多數 Electron 應用程式。但是,如果您正在使用自訂安裝程式,或者您在使用產生的套件時遇到任何問題,您可以嘗試使用 Windows 容器編譯來建立套件,在該模式下,CLI 將在空白的 Windows 容器中安裝並執行您的應用程式,以確定您的應用程式對作業系統進行了哪些確切的修改。
在第一次執行 CLI 之前,您必須設定「Windows 桌面應用程式轉換器」。這將需要幾分鐘時間,但別擔心,您只需要執行一次。從此處下載桌面應用程式轉換器。您將收到兩個檔案:DesktopAppConverter.zip
和 BaseImage-14316.wim
。
- 解壓縮
DesktopAppConverter.zip
。從提升權限的 PowerShell (以「系統管理員身分」開啟),確保您的系統執行原則允許我們執行我們打算執行的所有內容,方法是呼叫Set-ExecutionPolicy bypass
。 - 然後,執行桌面應用程式轉換器的安裝,傳入 Windows 基底映像 (下載為
BaseImage-14316.wim
) 的位置,方法是呼叫.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim
。 - 如果執行上述命令提示您重新啟動,請重新啟動您的機器,並在成功重新啟動後再次執行上述命令。
安裝成功後,您可以繼續編譯您的 Electron 應用程式。