加速器提供將舊版應用程式(應用程式)轉換為 MSIX 格式的有效方式。 它包含有關套件(應用程式)、進行轉換的作業系統(OS),以及修正套件以使轉換後的 MSIX 能正常運作所需步驟的重要資訊。
先決條件
若要在早期存取預覽版中試用加速器,請加入 MSIX 封裝工具測試人員計劃。
建立加速器
若要查看加速器結構,以及使用它來建置您自己的加速器,請參閱 MSIX-Labs GitHub 存放庫中的範例加速器。
定義
- PackageName: Package 是一個應用程式或程式集(Win32、WPF 或 Windows Forms 應用程式),其具有要轉換成 MSIX 格式的舊版安裝程式(如 exe、msi 等)。
- PackageVersion:套件版本與特定版本相關聯。 在某些情況下,您會看到格式完美的 語義版本號;而在其他情況下,您可能會看到不同的格式。 這些可能是以日期為驅動,或可能包含其他字元,具有某些套件特定意義。
- PublisherName:套件 的原始 發行者名稱。
- EligibleForConversion:基於安全性考慮,使用驅動程式等,禁止某些應用程式進行轉換。因此,此旗標用來判斷轉換的資格。 您可以 在這裡找到可接受的值。
- ConversionStatus:判斷應用程式轉換的狀態。 您可以 在這裡找到可接受的值。
-
RemediationApproach:
- SequenceNumber:決定修正步驟的序號。 修正成功轉換應用程式的步驟,必須循序提供。
-
問題:
- 描述:轉換時所遇到實際問題的文字描述。 例如,登錄錯誤或 Procmon 中的 FileCreate 錯誤。
- 參考:(選擇性欄位)連結至包含問題詳細信息的檔。
- 修正:
- MinimumPSFVersion:(只有在至少其中一個 FixType 使用 PSF 或 PackageSupportFramework 時才需要)。 由於 PSF 版本具有回溯相容性,因此任何高於此指定版本的版本皆可運行。
- AdditionalComments:列出關於應用程式轉換的其他資訊,僅適用於人類閱讀。 此欄位為選擇性欄位。
- 版本:操作系統的版本。 範例 - Windows 10 企業版。
- MinimumOSVersion:操作系統的版本。 範例 - 21H1。 此欄位表示任何大於此指定 OS 版本的版本都能夠運作。
- MinimumOSBuild:作業系統的建置版本。 範例 - “19043.1165”。 此欄位表示任何大於此指定OS組建的OS組建都能夠運作。
- 架構:封裝的架構(應用程式)。 (32/64 位)
- MSIXConversionToolVersion:用於轉換的 MSIX 封裝工具版本。 範例 - 1.2021.709.0;
- AcceleratorVersion:所使用的加速器版本。 目前最新版本為 1.0.0。
指令列選項用於加速器
若要自動轉換,您可以透過 MSIX 封裝工具產生加速器範本。
確定 MSIX 封裝工具設定中已選取 [產生具有每個封裝的命令行檔案] 選項。
使用 MSIX 封裝工具轉換應用程式,並在轉換程式中套用加速器。
根據預設,除非您指定不同的儲存位置,否則轉換範本檔案會儲存在與 MSIX 套件相同的位置。
使用提升許可權模式執行 MsixPackagingTool.exe。
執行下列 Cmdlet 以使用加速器範本:
MsixPackagingTool.exe create-package --template c:\users\documents\AcceleratorTemplate.xml
如需產生命令行轉換範本檔案的詳細資訊 ,請參閱這裡。 在這裡瞭解可當做命令行自變數傳遞的參數 。
ConversionStatus 的使用案例
- 成功 - 不需要修正
ConversionStatus: Successful - No Fix Required
- 成功 - 需要修正
ConversionStatus: Successful - Fix Required
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: App unable to install visual c++ dependency
Fix:
FixType: Dependency
FixDetails:
Dependencies:
- Visual C++
- 已轉換但有問題
ConversionStatus: Converted With Issues
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Shortcut not captured
Fix:
FixType: EntryPoint
FixDetails:
EntryPointIssue: ShortcutNotCaptured
Solution:
- Launch from start menu
- 失敗
ConversionStatus: Failed
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Registry errors in Procmon
- 不符合資格
EligibleForConversion: No - Driver Required
ConversionStatus: Not Eligible
FixDetails 的使用案例
- FixType:能力
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Admin Access needed to run an app
Fix:
FixType: Capability
Reference: /windows/uwp/packaging/app-capability-declarations#:~:text=or%20Visual%20Studio.-,Elevation,-The%20allowElevation%20restricted
FixDetails:
Capabilities:
- allowElevation
- FixType:相依性
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: The app needs a 2008 C++ to be installed in the system
Reference: https://forums.guru3d.com/threads/problem-running-afterburner.408768/
Fix:
FixType: Dependency
Reference: https://forums.guru3d.com/threads/problem-running-afterburner.408768/
FixDetails:
Dependencies:
- C++ 2008 runtime
- 修正類型:安裝路徑
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Required permissions were not granted to the VFS folder and launcher.exe was not available during msix launch
Fix:
FixType: InstallationPath
Reference: /windows/msix/packaging-tool/create-app-package#package-information
FixDetails:
Path: C:/Users/User/AppData/Local
- FixType:自定義
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Chromium is downloaded as zip (not exe or msi).
Fix:
FixType: Custom
FixDetails:
Solution:
- MSIX Packaging Tool Installation Step, Unzip the chromium.zip and then launch chrome.exe.
- FixType:PSF
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: There were create file errors in process monitor
Fix:
FixType: PSF
Reference: https://github.com/Microsoft/MSIX-PackageSupportFramework/tree/master/fixups/FileRedirectionFixup
FixDetails:
PSFConfig:
applications:
- id: LINELAUNCHER
executable: LINE/bin/LineLauncher.exe
workingDirectory: LINE/bin/
processes:
- executable: LineLauncher
fixups:
- dll: FileRedirectionFixup.dll
config:
redirectedPaths:
packageRelative:
- base: LINE/Data/
patterns:
- .*\.tst
- base: LINE/bin/
patterns:
- .*
- FixType:Services
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: MSIX Packaging Tool failed to convert to MSIX stating a service is running outside the package.
Fix:
FixType: Services
FixDetails:
Exclude:
- CleanupPSvc
- 修復類型:EntryPoint
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Shortcut not captured
Reference: https://microsoft.visualstudio.com/DefaultCollection/OS/_workitems/edit/35877020
Fix:
FixType: EntryPoint
FixDetails:
EntryPointIssue: ShortcutNotCaptured
Solution:
- Launch from start menu
- FixType:InstalledLocationVirtualization
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: Test Issue
Fix:
FixType: InstalledLocationVirtualization
Reference: /uwp/schemas/appxpackage/uapmanifestschema/element-uap10-installedlocationvirtualization
FixDetails:
UpdateActionsAttributes:
ModifiedItems: keep
DeletedItems: reset
AddedItems: keep
- FixType:LoaderSearchPathOverride
RemediationApproach:
- SequenceNumber: 1
Issue:
Description: DLL not found
Fix:
FixType: LoaderSearchPathOverride
Reference: /uwp/schemas/appxpackage/uapmanifestschema/element-uap6-loadersearchpathoverride
FixDetails:
FolderPaths:
- VFS\ProgramFilesX64\LINE\lib
- VFS\ProgramFilesX64\LINE\bin
EligibleForConversion 的接受值
- 是的
- 否
- 否 - 需要驅動程式
ConversionStatus 的接受值
成功 - 不需要修正
成功 - 需要修正
已轉換但有問題
失敗
不符合資格
EligibleForConversion 與 ConversionStatus 之間的關聯
| 符合轉換資格 | ConversionStatus (轉換狀態) |
|---|---|
| 是的 | 成功 - 不需要修正、成功 - 需要修正、轉換結果有問題 |
| 否 | 失敗,不符合資格 |
| 否 - 需要驅動程式 | 不符合資格 |
FixType 的接受值
| 接受的值 | 定義 |
|---|---|
| 能力* | MSIX 應用程式運作所需的功能(例如:allowElevation、uiAccess 等)。 在轉換期間,在 AppManifest 或透過 MSIX 封裝工具中的 [功能] 頁面新增。 詳細資訊請看這裡。 |
| 依賴性 | MSIX 應用程式運行所需的依賴項(例如:C++ 2008 可轉散發套件 x86)。 要在作業系統環境中從外部下載。 |
| 安裝路徑 | 用於自訂設定 exe/msi 安裝程式的位置,以避免安裝資料到預設資料夾(Program Files)之外的地方。 在轉換期間,必須在 MSIX 封裝工具的 [套件資訊] 頁面中新增路徑。 詳細資訊請看這裡。 |
| 習慣 | 用戶必須手動完成的修正,以修正 MSIX 應用程式。 例如:變更應用程式指令清單中的應用程式標識碼順序。 |
| PSF* | 新增套件支持架構修正程式(例如:FileRedirectionFixup)以修正 MSIX 應用程式。 用戶必須在轉換期間建立一個 config.json,並在套件中新增它和其他必要的 DLL。 詳細資訊請看這裡。 加速器的作者必須在 PSFConfig 欄位中提供 config.json 的 yaml 等效內容。 |
| 服務業 | 需要包含/排除的服務,才能讓 MSIX 應用程式運作。 必須在進行轉換的過程中於 MSIX 封裝工具的服務報告中具體指定。 詳細資訊請看這裡。 |
| 入口點 | 若要修正與 EntryPoint 相關的問題(例如:ShortcutNotCaptured)。 詳細資訊請看這裡。 |
| 已安裝位置虛擬化* | 此延伸模組會將任何寫入應用程式安裝目錄重新導向至應用程式數據中的位置。 如需詳細資訊,請參閱 這裡 和 這裡 。 ModifiedItems、DeletedItems 和 AddedItems 的預設值分別為保留、重設和保留。 |
| LoaderSearchPathOverride*(載入器搜索路徑覆蓋) | 這是一個延伸模組,可讓應用程式開發人員在應用程式套件中宣告相對於應用程式套件根路徑的路徑,以包含在應用程式進程的載入器搜尋路徑中。 加速器的作者必須提供要包含的路徑清單。 詳細資訊請看這裡。 |
備註
MSIX 封裝工具會自動支援上方以星號 (*) 標記的修正類型 (FixTypes)。