使用修改套件自訂您的 Enterprise 應用程式

自訂應用程式體驗的能力很重要,尤其是針對企業。 我們向 IT 專業人員說過,我們知道自訂應用程式以符合使用者的需求,對於移至 Windows 10 來說非常重要。 自訂使用 MSI 封裝的應用程式時,很容易就能瞭解 IT 專業人員必須從開發人員取得套件,並使用自訂重新封裝安裝程式,以符合其需求。 這是企業成本高昂的工作。 接下來,我們想要將自訂和主應用程式分離,以不再需要重新封裝。 這可確保企業從開發人員取得最新的更新,同時仍維持其自訂的控制權。

在 Windows 10 版本1809中,我們引進了一種新的 MSIX 套件,稱為修改套件。 修改套件是儲存自訂的 MSIX 封裝。 修改套件也可以是外掛程式/附加元件,這些元件可能沒有啟用點。 IT 專業人員可以使用此功能來彈性地變更 MSIX 容器,讓應用程式依其企業的自訂重迭。

運作方式

修改套件是針對未擁有應用程式程式碼且只有安裝程式的企業所設計。 您可以使用 Windows 10 1809 版或更新版本) 的最新版 MSIX 封裝工具 (來建立修改套件。 如果您有應用程式的程式碼,您也可以建立 應用程式延伸模組。

如果您想要建立對主要應用程式具有嚴格系結的修改套件,可以在修改套件的資訊清單中將主要應用程式宣告為相依性。

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App"/>
</Dependencies>

下列範例示範如何指定不同的憑證或發行者。

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App" Publisher="CN=Contoso, C=US" />
</Dependencies>

如果修改套件和主要套件之間的關聯性是一對一的,這就是簡單的設定。 一般的自訂通常需要 HKEY_CURRENT_USER 或 HKEY_CURRENT_USERCLASS 下的登錄機碼。 在我們的 MSIX 套件中,我們會有使用者的 .dat 和 Userclass .dat 檔案,以抓取登錄機碼。 如果您需要 HKCU\Software * (下的登錄機碼,您將需要建立使用者,就像使用 Registry 一樣,也可以使用 HKLM\Software * ) 。 如果您需要 HKCU\Sofware\Classes * 下的金鑰,請使用 Userclass。

以下是建立 .dat 檔案的一般方式:

  • 使用 Regedit 來建立檔案。 在 Regedit 中建立 hive,然後插入必要的金鑰。 以滑鼠右鍵按一下 [匯出] 和 [另存新檔]。 請務必將檔案命名為 Userclass 或 .dat

  • 使用 API 來建立必要的檔案。 您可以使用 ORSaveHive 函數來儲存 .dat 檔案。 請務必將檔案命名為乙太幣使用者的 .dat 或 Userclass。

進行必要的變更之後,您可以建立修改套件,就像任何其他 MSIX 封裝一樣。 然後,您可以使用目前的部署設定來部署套件。 當您重新開機主要應用程式時,您可以看到修改套件所做的變更。 如果您選擇移除修改套件,您的主要應用程式將會還原為不含修改套件的狀態。

瞭解裝置上已安裝的修改套件

使用 PowerShell 時,您可以使用下列命令來查看已安裝的修改套件。

Get-AppPackage -PackageTypeFilter Optional

Windows 10 版本1809上的修改套件

在 Windows 10 版本1809上,修改套件可能包含在登錄中設定所需的設定,因此主要套件將會如預期般執行。 這表示您的主要應用程式會利用登錄來查看外掛程式是否存在。 當您部署主要套件和修改套件時,應用程式會在執行階段上檢視主要套件和修改套件的虛擬登錄 (VREG)。

請注意,您的主要套件可能會使用 VREG 來執行下列事項:

  • 在外掛程式的 DLL) 中,查看載入檔案 (。 如果是這種情況,請確定檔案是套件的一部分。 如此一來,主要套件就可以在執行階段上存取檔案。
  • 檢視能看到 VREG 機碼值的位置。 您的主要套件可能會尋找存在於 VREG 中的值。 當您手動或使用工具來建立修改套件時,請確認該值是否正確。

Windows 10、1903版和更新版本上的修改套件

Windows 10 1903 版中已加入下列功能。

資訊清單更新

我們已將下列元素的支援加入 MSIX 修改套件資訊清單。

<Properties>
   <rescap6:ModificationPackage>true</rescap6:ModificationPackage>
</Properties>

若要確保修改套件能在 1903 版或更新版本中運作,修改套件資訊清單中必須包含此元素。 如果您使用 MSIX 封裝工具的 1 月版本來封裝 MSIX 修改套件,則此動作會自動完成。 如果您使用早於該版本的工具來轉換套件,您可以透過在工具中編輯現有套件,來加入這個新的元素。 此外,如果使用者安裝修改套件,他們就會看見套件可能會修改主應用程式的警示。

如果您使用1903版之前建立的修改套件,則必須編輯套件資訊清單,將 MaxVersionTested 屬性更新為10.0.18362.0。

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="10.0.18362.0" />

使用 MSIX 封裝工具建立修改套件

您可以使用 MSIX 封裝工具建立修改套件:

  • 指定主要套件。 確定要進行轉換的機器上有 MSIX 版本的主要套件。 如果沒有,我們會要求您手動提供發行者和主應用程式資訊。 也有些自訂會要求主應用程式需安裝在您的機器上。 修改套件的修改

  • 使用套件編輯器修改經過轉換的套件。 主要套件可能會需要修改套件在其 VREG 中具有特定值。 您可以移至此處並適當地編輯套件。

使用 MakeAppx.exe 建立修改套件

您可以使用 Windows 10 SDK 隨附的MakeAppX.exe工具,以手動方式建立修改套件。

  • 在資訊清單中,指定主要套件。 包含發行者與主要套件名稱。

    <Dependencies>
      <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="12.0.0.0"/>
      <uap4:MainPackageDependency Name="HeadTrax" Publisher="CN=Contoso Software, O=Contoso Corporation, C=US" />
    </Dependencies>
    
  • 建立 Registry.dat、User.dat 和 Userclass.dat,無論建立什麼,您都需要登錄機碼來載入您的修改套件。 這只有在需要主應用程式檢視自訂登錄機碼時才需這麼做。 請記住,因為所有項目都在容器內執行,因此在執行階段上,主要套件和修改套件的虛擬登錄將會合併,好讓主要套件可以檢視修改套件的虛擬登錄。

此程序也支援檔案系統外掛程式和自訂項目,只要主應用程式可執行檔不在虛擬檔案系統 (VFS) 內即可。 這是為了確保主要套件會收到主要套件和修改套件的所有 VFS。

在電腦上安裝修改套件

在電腦上安裝修改套件會遵循其他安裝慣例。 值得注意的是,在安裝封裝時,您可能會想要使用 -OptionalPackagePath 參數。