共用方式為


應用程式發佈與用戶端互動

本文提供一般 App-V 用戶端作業及其與本機操作系統整合的技術資訊。

如需其他參考資訊,請 參閱 Microsoft Application Virtualization (App-V) 文件資源下載頁面

Sequencer 所建立的 App-V 套件檔案

Sequencer 會建立 App-V 套件,並產生虛擬化應用程式。 排序程式會建立下列檔案:

檔案 描述

.appv

  • 主要封裝檔案,其中包含從排序程式擷取的資產和狀態資訊。

  • 封裝檔案的架構、發佈資訊,以及令牌化表單中的登錄,可在傳遞時重新套用至計算機和特定使用者。

.MSI

您可以用來手動部署 .appv 檔案或使用第三方部署平臺的可執行部署包裝函式。

_DeploymentConfig.XML

檔案,用來自定義封裝中所有應用程式的預設發佈參數,該套件會全域部署至執行App-V用戶端之電腦上的所有使用者。

_UserConfig.XML

檔案,用來自定義封裝中所有應用程式的發佈參數,該套件是部署至執行App-V用戶端之電腦上的特定使用者。

Report.xml

排序程式所產生的訊息摘要,包括省略的驅動程式、檔案和登錄位置。

.CAB

選: 封裝加速器檔案,用來自動重建先前循序的虛擬應用程式套件。

.appvt

選: 用來保留經常重複使用的 Sequencer 設定的排序器範本檔案。

如需排序的相關信息,請參閱 Application Virtualization 5.0 排序指南

appv 檔案中有什麼內容?

appv 檔案是一個容器,可將 XML 和非 XML 檔案一起儲存在單一實體中。 此檔案是根據 OPC) 標準 (開放式封裝慣例,以 AppX 格式建置而來。

若要檢視 appv 檔案內容,請建立套件的複本,然後將複製的檔案重新命名為 ZIP 擴展名。

appv 檔案包含下列資料夾和檔案,可在建立和發表虛擬應用程式時使用:

名稱 類型 描述

根目錄

檔案資料夾

目錄,其中包含排序期間所擷取之虛擬化應用程式的檔案系統。

[Content_Types].xml

XML 檔案

appv 檔案 (e.g.DLL、EXE、BIN) 中的核心內容類型清單。

AppxBlockMap.xml

XML 檔案

appv 檔案的版面配置,其使用檔案、區塊和 BlockMap 元素來啟用 App-V 套件中檔案的位置和驗證。

AppxManifest.xml

XML 檔案

套件的元數據,其中包含新增、發佈和啟動封裝所需的資訊。 包含擴展名點 (檔案類型關聯和快捷方式) 以及與封裝相關聯的名稱和 GUID。

FilesystemMetadata.xml

XML 檔案

排序期間所擷取的檔案清單,包括屬性 (例如目錄、檔案、不透明目錄、空白目錄,以及完整和簡短名稱) 。

PackageHistory.xml

XML 檔案

排序計算機 (操作系統版本、Internet Explorer 版本、.Net Framework 版本) 和處理 (升級、套件版本) 的相關信息。

Registry.dat

DAT 檔案

封裝排序程序期間所擷取的登錄機碼和值。

StreamMap.xml

XML 檔案

主要和發佈功能區塊的檔案清單。 發佈功能區塊包含 ICO 檔案和發行套件所需的檔案 (EXE 和 DLL) 部分。 出現時,主要功能區塊會包含已在排序程式期間針對串流優化的檔案。

App-V 用戶端資料儲存位置

App-V 用戶端會執行工作,以確保虛擬應用程式正常執行,並像本機安裝的應用程式一樣運作。 開啟和執行虛擬應用程式的程式需要來自虛擬檔案系統和登錄的對應,以確保應用程式具有使用者預期的傳統應用程式所需的元件。 本節說明執行虛擬應用程式所需的資產,並列出App-V儲存資產的位置。

名稱 位置 說明

套件存放區

%ProgramData%\App-V

唯讀套件檔案的預設位置

機器目錄

%ProgramData%\Microsoft\AppV\Client\Catalog

包含每部計算機的設定檔

用戶目錄

%AppData%\Microsoft\AppV\Client\Catalog

包含每位用戶的設定檔

快捷方式備份

%AppData%\Microsoft\AppV\Client\Integration\ShortCutBackups

儲存先前在套件解除發佈時啟用還原的整合點

在 WRITE (的一次) 漫遊時複製

%AppData%\Microsoft\AppV\Client\VFS

套件修改的可寫入漫遊位置

在本機寫入 () 複製

%LocalAppData%\Microsoft\AppV\Client\VFS

用於修改套件的可寫入非漫遊位置

機器登錄

HKLM\Software\Microsoft\AppV

包含套件狀態資訊,包括計算機或全域發行套件的 VReg (Machine hive)

用戶登錄

HKCU\Software\Microsoft\AppV

包含使用者套件狀態資訊,包括 VReg

用戶登錄類別

HKCU\Software\Classes\AppV

包含其他使用者套件狀態資訊

下一節和整份檔中會提供數據表的其他詳細數據。

套件存放區

App-V 用戶端會管理封裝存放區中掛接的應用程式資產。 這個預設儲存位置是 %ProgramData%\App-V,但您可以使用 Set-AppVClientConfiguration PowerShell命令在安裝期間或安裝之後加以設定,此命令會修改本機登錄 (PackageInstallationRoot 機碼) 下的 HKLM\Software\Microsoft\AppV\Client\Streaming 值。 套件存放區必須位於用戶端操作系統的本機路徑。 個別套件會儲存在套件存放區中,並以套件 GUID 和版本 GUID 命名的子目錄中。

特定應用程式路徑的範例:

C:\ProgramData\App-V\PackGUID\VersionGUID

若要在安裝期間變更套件存放區的預設位置,請參閱 如何部署App-V用戶端

共用內容存放區

如果在共用內容存放區模式中設定App-V用戶端,當數據流發生錯誤時,不會將任何數據寫入磁碟,這表示套件需要最少的本機磁碟空間, (發佈數據) 。 在 VDI 環境中,使用較少的磁碟空間非常理想,因為本機記憶體可能會受到限制,而且最好從高效能網路位置串流處理應用程式 (例如 SAN) 。 如需分享內容存放區模式的詳細資訊,請參閱 https://go.microsoft.com/fwlink/p/?LinkId=392750

注意 即使您使用App-V用戶端的共用內容存放區設定,計算機和套件存放區也必須位於本機磁碟驅動器上。

套件目錄

App-V 用戶端會管理下列兩個檔案型位置:

  • 用戶和計算機) (目錄。

  • 登錄位置 - 取決於套件發佈的目標方式。 計算機有目錄 (資料存放區) ,以及每個個別用戶的目錄。 機器類別目錄會儲存適用於所有使用者或任何使用者的全域資訊,而使用者類別目錄則會儲存適用於特定用戶的資訊。 目錄是動態組態和指令清單檔案的集合;每個套件版本的檔案和登錄都有離散數據。 

機器目錄

描述

儲存在新增和發佈套件時,可供計算機上的使用者使用的套件檔。 不過,如果套件在發佈時為「全域」,則所有使用者都可以使用整合。

如果套件為非全域,則整合只會針對特定用戶發佈,但仍有全域資源可供用戶端計算機上的任何人修改和看見 (例如,套件目錄位於共用磁碟位置) 。

如果計算機上的使用者可以使用套件 (全域或非全域) ,則指令清單會儲存在計算機目錄中。 當封裝全域發佈時,會有儲存在機器類別目錄中的動態組態檔;因此,判斷封裝是否為全域是根據計算機目錄中是否有原則檔案 (UserDeploymentConfiguration 檔案) 來定義。

默認儲存位置

%programdata%\Microsoft\AppV\Client\Catalog</code>

此位置與封裝存放區位置不同。 套件存放區是封裝檔案的黃金或原始複本。

機器目錄中的檔案

  • Manifest.xml

  • DeploymentConfiguration.xml

  • UserManifest.xml (全域發行的套件)

  • UserDeploymentConfiguration.xml (全域發行的套件)

其他計算機目錄位置,當封裝是連線群組的一部分時使用

除了上面所述的特定套件位置之外,下列位置也如下:

%programdata%\Microsoft\AppV\Client\Catalog\PackageGroups\ConGroupGUID\ConGroupVerGUID

當封裝是連線群組的一部分時,計算機目錄中的其他檔案

  • PackageGroupDescriptor.xml

  • UserPackageGroupDescriptor.xml (全域發佈的連線群組)

用戶目錄

描述

在發佈程式期間建立。 包含用來發佈套件的資訊,也會在啟動時用來確保套件已布建給特定使用者。 建立於漫遊位置,並包含使用者特定的發佈資訊。

為用戶發行套件時,原則檔案會儲存在用戶類別目錄中。 同時,指令清單的複本也會儲存在用戶類別目錄中。 拿掉使用者的套件權利時,會從使用者類別目錄中移除相關的套件檔案。 查看使用者目錄,系統管理員可以檢視動態組態檔是否存在,這表示該套件是該用戶的許可權。

針對漫遊使用者,用戶類別目錄必須位於漫遊或共用位置,才能保留預設以用戶為目標的舊版 App-V 行為。 權利和原則系結至使用者,而不是計算機,因此在布建用戶之後,應該與使用者一起漫遊。

默認儲存位置

appdata\roaming\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID

用戶目錄中的檔案

  • UserManifest.xml

  • DynamicConfiguration.xml 或 UserDeploymentConfiguration.xml

其他用戶目錄位置,當封裝是連線群組的一部分時使用

除了上面所述的特定套件位置之外,下列位置也如下:

appdata\roaming\Microsoft\AppV\Client\Catalog\PackageGroups\PkgGroupGUID\PkgGroupVerGUID

當封裝是連線群組的一部分時,計算機目錄中的其他檔案

UserPackageGroupDescriptor.xml

快捷方式備份

在發佈程式期間,App-V 用戶端會將任何快捷方式和整合點備份至 %AppData%\Microsoft\AppV\Client\Integration\ShortCutBackups. 此備份,以便在解除發佈套件時,將這些整合點還原至舊版。

在寫入檔案上複製

套件存放區包含已從發佈伺服器串流處理之套件檔案的原始複本。 在 App-V 應用程式的正常作業期間,使用者或服務可能需要變更檔案。 這些變更不會在套件存放區中進行,以保留修復應用程式的能力,這會移除這些變更。 這些位置稱為「寫入時複製 (的) 」,同時支援漫遊和非漫遊位置。 儲存修改的位置取決於應用程式在原生體驗中寫入變更的位置。

在漫遊中漫遊

上面所述的一般 %AppData% 位置或 \Users\{username}\AppData\Roaming 位置,會儲存檔案和目錄的變更。 這些目錄和檔案接著會根據操作系統設定進行漫遊。

本機的一個

在本機位置與漫遊位置類似,但即使已設定漫遊支援,目錄和檔案也不會漫遊至其他計算機。 上述的[在本機位置] 會儲存適用於一般視窗的變更,而非 %AppData% 位置。 列出的目錄會有所不同,但任何一般 Windows 位置都會有兩個位置, (例如 Common AppData 和 Common AppDataS) 。 當虛擬服務要求變更時, S 會以與登入的使用者不同的提高許可權使用者身分,來表示受限制的位置。 非 S 位置會儲存以用戶為基礎的變更。

套件登錄

App-V 用戶端必須讓套件登錄資料可供應用程式使用,應用程式才能存取套件登錄數據。 App-V 用戶端會使用實際登錄作為所有登錄數據的支援存放區。

將新的套件新增至 App-V 用戶端時,即登錄的複本。封裝中的 DAT 檔案建立於 %ProgramData%\Microsoft\AppV\Client\VREG\{Version GUID}.dat。 檔案的名稱是具有的版本 GUID。DAT 擴充功能。 建立此復本的原因是為了確保套件中的實際 Hive 檔案永遠不會使用,這會防止稍後移除套件。

從封裝存放區Registry.dat

 > 

%ProgramData%\Microsoft\AppV\Client\Vreg{VersionGuid}.dat

當用戶端上啟動封裝中的第一個應用程式時,用戶端會將內容階段或複製到 Hive 檔案中,然後在替代位置重新建立套件登錄數據 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AppV\Client\Packages\PackageGuid\Versions\VersionGuid\REGISTRY。 暫存登錄數據有兩種不同類型的機器數據和用戶數據。 計算機數據會在計算機上的所有用戶之間共用。 每個使用者的使用者資料都會暫存到使用者特定位置 HKCU\Software\Microsoft\AppV\Client\Packages\PackageGuid\Registry\User。 機器數據最終會在封裝移除時移除,而用戶數據會在使用者解除發佈作業時移除。

套件登錄預備與連線群組登錄預備

當連線群組存在時,先前暫存登錄的程式會成立,但不會有一個要處理的Hive檔案,而是有一個以上的。 檔案的處理順序是以它們出現在連接群組 XML 中的順序,而第一個寫入器會贏得任何衝突。

暫存登錄的保存方式與單一套件案例相同。 分段使用者登錄數據會保留在連線群組,直到停用為止;分段電腦登錄數據會在連線群組移除時移除。

虛擬登錄

虛擬登錄 (VREG) 的目的是為應用程式提供封裝登錄和原生登錄的單一合併檢視。 它也提供 COPY-on-write (的) 功能 – 也就是從虛擬程式的內容對登錄所做的任何變更都會對個別的一個在一個在一個當中的位置進行。 這表示 VREG 必須根據登錄的已填入位置,將最多三個不同的登錄位置合併成單一檢視。在登錄中,有一個起始位置的> ,封裝 -> 原生。 對登錄數據提出要求時,它會依序尋找,直到找到所要求的數據為止。 這表示如果有值儲存在一個在一個要處理的位置,則不會繼續前往其他位置,不過,如果在[無數據] 位置中沒有數據,則會繼續進行封裝,然後繼續進行 [原生位置],直到找到適當的數據為止。

登錄位置

有兩個套件登錄位置和兩個連線群組位置,其中 App-V 用戶端會儲存登錄資訊,視套件是個別發佈還是作為連線群組的一部分而定。 封裝有三個,連線群組有三個,由 VREG 建立和管理。 套件和連線群組的設定不會分享:

單一套件 VReg:

位置

描述

  • Machine Registry\Client\Packages\PkgGUID\REGISTRY (只有提高進程才能寫入)

  • User Registry\Client\Packages\PkgGUID\REGISTRY (使用者漫遊任何以 HKCU 撰寫的專案,但 Software\Classes 除外

  • 用戶登錄類別\Client\Packages\PkgGUID\REGISTRY (HKCU\Software\Classes 寫入和 HKLM 以進行非提升許可權的程式)

套件

  • Machine Registry\Client\Packages\PkgGUID\Versions\VerGuid\Registry\Machine

  • User Registry Classes\Client\Packages\PkgGUID\Versions\VerGUID\Registry

本地

  • 原生應用程式登錄位置

線上群組 VReg:

位置

描述

  • Machine Registry\Client\PackageGroups\GrpGUID\REGISTRY (只有提升程式可以寫入)

  • User Registry\Client\PackageGroups\GrpGUID\REGISTRY (所有寫入 HKCU 但 Software\Classes 以外的專案

  • User Registry Classes\Client\PackageGroups\GrpGUID\REGISTRY

套件

  • Machine Registry\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY

  • User Registry Classes\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY

本地

  • 原生應用程式登錄位置

HKLM 有兩個的一個的一個在一起;提升許可權和未提升許可權的進程。 提升許可權的程式一律會將 HKLM 變更寫入 HKLM 底下的安全的。。 非提升許可權的進程一律會將 HKLM 變更寫入 HKCU\Software\Classes 底下的不安全的。。 當應用程式從 HKLM 讀取變更時,提升許可權的進程會讀取 HKLM 下安全的 HKLM 變更。 兩者的非提升許可權讀取,優先於不安全的在 UNSEC 中所做的變更。

傳遞金鑰

傳遞金鑰可讓系統管理員設定特定的金鑰,使其只能從原生登錄讀取,而略過套件和執行位置。 傳遞位置是全域傳送至計算機 (不是封裝特定) ,而且可以藉由將路徑新增至密鑰來設定,該路徑應視為傳遞至密鑰HKLM\Software\Microsoft\AppV\Subsystem\VirtualRegistryREG_MULTI_SZPassThroughPaths。 出現在這個多字串值下的任何索引鍵 (及其子系) 都會視為傳遞。

根據預設,下列位置會設定為傳遞位置:

  • HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppModel

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger

  • HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib

  • HKEY_LOCAL_MACHINE\SOFTWARE\Policies

  • HKEY_CURRENT_USER\SOFTWARE\Policies

傳遞金鑰的目的是要確保虛擬應用程式不會在 VReg 中寫入成功作業或整合所需的登錄數據。 原則密鑰可確保系統管理員所設定的 群組原則 型設定會被使用,而不是根據套件設定。 需要 AppModel 金鑰,才能與以 Windows Modern UI 為基礎的應用程式整合。 建議系統管理員不要修改任何預設傳遞密鑰,但在某些情況下,根據應用程式行為可能需要新增額外的傳遞密鑰。

App-V 套件存放區行為

App-V 5 會管理套件存放區,也就是從 appv 檔案儲存擴充資產檔案的位置。 根據預設,此位置會儲存在 %ProgramData%\App-V,而且僅受限於可用磁碟空間的儲存功能。 套件存放區是由套件和版本的 GUID 組織,如上一節所述。

新增套件

除了具有App-V用戶端的電腦之外,還會暫存App-V套件。 App-V 用戶端提供隨選預備。 在發佈或手動 Add-AppVClientPackage 期間,數據結構會建置在套件存放區中, (c:\programdata\App-V\{PkgGUID}\{VerGUID}) 。 在 StreamMap.xml 中定義的發佈區塊中識別的套件檔案會新增至系統,並分段最上層資料夾和子檔案,以確保啟動時有適當的應用程式資產存在。

掛接套件

您可以使用PowerShell Mount-AppVClientPackage 或使用 App-V用戶端UI 來下載套件,明確載入套件。 這項作業會將整個封裝完全載入封裝存放區。

串流套件

App-V 用戶端可以設定為變更串流的預設行為。 所有串流原則都會儲存在下列登錄機碼下: HKEY_LOCAL_MAcHINE\Software\Microsoft\AppV\Client\Streaming。 原則是使用PowerShell Cmdlet來設定。Set-AppvClientConfiguration 下列原則適用於串流:

原則 描述

AllowHighCostLaunch

在 Windows 8允許透過 3G 和行動數據網路進行串流處理

AutoLoad

指定背景載入設定:

0 - 已停用

1 – 僅限先前使用的套件

2 – 所有套件

PackageInstallationRoot

本機計算機中套件存放區的根資料夾

PackageSourceRoot

應該從中串流封裝的根覆寫

SharedContentStoreMode

啟用 VDI 案例的共用內容存放區

這些設定會影響將App-V套件資產串流至客戶端的行為。 根據預設,App-V 只會下載下載初始發佈和主要功能區塊之後所需的資產。 串流套件有三種特定行為,必須加以說明:

  • 背景串流

  • 優化串流

  • 數據流錯誤

背景串流

PowerShell Cmdlet Get-AppvClientConfiguration 可用來判斷使用 AutoLoad 設定的背景串流目前模式,並使用 cmdlet Set-AppvClientConfiguration 或從登錄 (HKLM\SOFTWARE\Microsoft\AppV\ClientStreaming 機碼) 進行修改。 背景串流是預設設定,其中的 [自動載入] 設定會設定為下載先前使用的套件。 根據預設設定 (值=1 的行為) 在應用程式啟動之後,於背景下載 App-V 數據區塊。 此設定可以一起停用, (value=0) 或針對所有套件啟用, (value=2) ,不論它們是否已啟動。

優化串流

在排序期間,可以使用主要功能區塊來設定App-V套件。 此設定可讓排序工程師監視特定應用程式或應用程式的啟動檔案,並標示App-V套件中的數據區塊,以便在套件中的任何應用程式第一次啟動時進行串流處理。

數據流錯誤

在任何發行數據和主要功能區塊的初始數據流之後,其他檔案的要求會執行數據流錯誤。 這些數據區塊會視需要下載到封裝存放區。 這可讓使用者只下載套件的一小部分,通常足以啟動套件並執行一般工作。 當使用者起始需要目前不在封裝存放區中之數據的作業時,會下載所有其他區塊。

如需 App-V 套件串流的詳細資訊,請造訪: https://go.microsoft.com/fwlink/?LinkId=392770

串流優化的排序位於: https://go.microsoft.com/fwlink/?LinkId=392771

套件升級

App-V 套件需要在應用程式的生命週期中進行更新。 App-V 套件升級類似於套件發佈作業,因為每個版本都會建立在自己的 PackageRoot 位置: %ProgramData%\App-V\{PkgGUID}\{newVerGUID}。 升級作業的優化方式是從相同套件的其他版本建立相同和串流檔案的硬式連結。

套件移除

拿掉套件時,App-V 用戶端的行為取決於用於移除的方法。 使用App-V完整基礎結構來解除發佈應用程式,系統會移除全域發佈應用程式) (計算機目錄的使用者類別目錄檔案,但會保留套件存放區位置和一般資訊。 使用 PowerShell Cmdlet Remove-AppVClientPackge 移除 App-V 套件時,會清除套件存放區位置。 請記住,從 Management Server 取消發布 App-V 套件並不會執行移除作業。 這兩項作業都不會移除套件存放區套件檔案。

漫遊登錄和數據

App-V 5 能夠在漫遊時提供近乎原生體驗,視所使用的應用程式撰寫方式而定。 根據預設,App-V 會根據操作系統的漫遊設定,漫遊儲存在漫遊位置的 AppData。 儲存檔案型數據的其他位置不會從計算機漫遊到計算機,因為它們位於未漫遊的位置。

漫遊需求和使用者目錄數據記憶體

App-V 會以下列形式儲存數據,代表使用者目錄的狀態:

  • %appdata%\Microsoft\AppV\Client\Catalog 下的檔案

  • 下方的登錄設定 HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages

這些檔案和登錄設定一起代表用戶的目錄,因此兩者都必須漫遊,或兩者都不一定要漫遊給定的使用者。 App-V 不支援漫遊 %AppData%,但不支援漫遊使用者的配置檔 (登錄) ,反之亦然。

注意Repair-AppvClientPackage Cmdlet 不會修復套件的發佈狀態,其中的使用者 App-V 狀態HKEY_CURRENT_USER遺失或與 %appdata% 中的數據不相符。

以登錄為基礎的數據

App-V 登錄漫遊分為兩種案例,如下表所示。

案例 描述

以標準使用者身分執行的應用程式

當標準使用者啟動App-V應用程式時,適用於App-V應用程式的HKLM和HKCU都會儲存在電腦上的HKCU Hive 中。 這會顯示為兩個不同的路徑:

  • HKLM:HKCU\SOFTWARE\Classes\AppV\Client\Packages{PkgGUID}\REGISTRY\MACHINE\SOFTWARE

  • HKCU: HKCU\SOFTWARE\Microsoft\AppV\Client\Packages{PkgGUID}\REGISTRY\USER{UserSID}\SOFTWARE

位置會根據作業系統設定啟用漫遊。

以提高許可權執行的應用程式

啟動具有提高權限的應用程式時:

  • HKLM 資料會儲存在本機電腦上的 HKLM Hive 中

  • HKCU 資料會儲存在用戶登錄位置

在此案例中,這些設定不會以一般操作系統漫遊設定漫遊,而產生的登錄機碼和值會儲存在下列位置:

  • HKLM\SOFTWARE\Microsoft\AppV\Client\Packages{PkgGUID}{UserSID}\REGISTRY\MACHINE\SOFTWARE

  • HKCU\SOFTWARE\Microsoft\AppV\Client\Packages{PkgGUID}\Registry\User{UserSID}\SOFTWARE

App-V 和資料夾重新導向

App-V 5.0 SP2 支援將漫遊 AppData 資料夾的資料夾重新導向 (%AppData%) 。 當虛擬環境啟動時,來自使用者漫遊 AppData 目錄的漫遊 AppData 狀態會複製到本機快取。 相反地,當虛擬環境關閉時,與特定使用者漫遊 AppData 相關聯的本機快取會傳輸到該使用者漫遊 AppData 目錄的實際位置。

一般套件有數個位置對應於使用者的備份存儲中,以取得AppData\Local和AppData\Roaming中的設定。 這些位置是每位使用者儲存在使用者配置檔中的「寫入時複製」位置,用來儲存對套件 VFS 目錄所做的變更,以及保護預設套件 VFS。

下表顯示尚未實作資料夾重新導向時的本機和漫遊位置。

套件中的 VFS 目錄 備份存儲區的對應位置

ProgramFilesX86

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\ProgramFilesX86

SystemX86

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\SystemX86

Windows

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\Windows

appv_ROOT

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\appv_ROOT

AppData

C:\users\jsmith\AppData<strong>Roaming\Microsoft\AppV\Client\VFS<GUID>\AppData

下表顯示本機和漫遊位置,當已針對 %AppData% 實作資料夾重新導向,且位置通常已重新導向 (至網路位置) 。

套件中的 VFS 目錄 備份存儲區的對應位置

ProgramFilesX86

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\ProgramFilesX86

SystemX86

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\SystemX86

Windows

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\Windows

appv_ROOT

C:\users\jsmith\AppData<strong>Local\Microsoft\AppV\Client\VFS<GUID>\appv_ROOT

AppData

\Fileserver\users\jsmith\roaming\Microsoft\AppV\Client\VFS<GUID>\AppData

目前的 App-V 用戶端 VFS 驅動程式無法寫入網路位置,因此 App-V 用戶端會偵測資料夾重新導向的存在,並在發佈期間和虛擬環境啟動時複製本機磁碟驅動器上的數據。 當使用者關閉App-V應用程式,且App-V用戶端關閉虛擬環境之後,VFS AppData 的本機記憶體會複製回網路,讓漫遊至其他電腦,其中會重複此程式。 程序的詳細步驟如下:

  1. 在發佈或虛擬環境啟動期間,App-V 用戶端會偵測 AppData 目錄的位置。

  2. 如果漫遊 AppData 路徑是本機或 ino AppData\Roaming 位置已對應,則不會發生任何事。

  3. 如果漫遊 AppData 路徑不是本機,VFS AppData 目錄會對應至本機 AppData 目錄。

此程式可解決 App-V 用戶端 VFS 驅動程式不支援的非本機 %AppData% 問題。 不過,儲存在此新位置的數據不會隨著資料夾重新導向漫遊。 應用程式執行期間的所有變更都會發生在本機 AppData 位置,而且必須複製到重新導向的位置。 此程式的詳細步驟如下:

  1. App-V 應用程式已關閉,這會關閉虛擬環境。

  2. 漫遊 AppData 位置的本機快取會壓縮並儲存在 ZIP 檔案中。

  3. ZIP 封裝程式結尾的時間戳是用來命名檔案。

  4. 時間戳會記錄在登錄中:HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages\<GUID>\AppDataTime 作為最後一個已知的 AppData 時間戳。

  5. 系統會呼叫資料夾重新導向程式,以評估並起始上傳至漫遊 AppData 目錄的 ZIP 檔案。

如果發生衝突,時間戳是用來判斷「最後寫入者獲勝」案例,並用來在發佈App-V應用程式或啟動虛擬環境時將數據下載優化。 資料夾重新導向可讓支援原則涵蓋的任何其他用戶端提供數據,並起始將AppData\Roaming資料儲存至用戶端上本機AppData位置的程式。 詳細的程式如下:

  1. 用戶藉由啟動應用程式來啟動虛擬環境。

  2. 應用程式的虛擬環境會檢查是否有最新的時間戳 ZIP 檔案。

  3. 如果存在,則會檢查登錄中是否有最後一個已知已上傳的時間戳。

  4. 除非本機上次已知上傳時間戳大於或等於 ZIP 檔案中的時間戳,否則會下載最新的 ZIP 檔案。

  5. 如果上次已知的本機上傳時間戳早於漫遊 AppData 位置中最新 ZIP 檔案的時間戳,則 ZIP 檔案會解壓縮到使用者配置檔中的本機暫存目錄。

  6. 成功擷取 ZIP 檔案之後,會重新命名漫遊 AppData 目錄的本機快取,並將新數據移到原處。

  7. 重新命名的目錄會遭到刪除,且應用程式會以最近儲存的漫遊 AppData 資料開啟。

這會完成AppData\Roaming位置中應用程式設定的成功漫遊。 唯一必須解決的其他條件是封裝修復作業。 程式的詳細資料如下:

  1. 在修復期間,偵測使用者漫遊 AppData 目錄的路徑是否不是本機。

  2. 對應非本機漫遊 AppData 路徑目標會重新建立預期的漫遊和本機 AppData 位置。

  3. 如果存在,請刪除儲存在登錄中的時間戳。

此程式會重新建立 AppData 的本機和網路位置,並移除時間戳的登錄記錄。

App-V 用戶端應用程式生命週期管理

在 App-V 完整基礎結構中,在排序應用程式之後,它們會透過 App-V 管理和發佈伺服器管理並發佈給使用者或電腦。 本節詳述在一般 App-V 應用程式生命週期作業期間發生的作業, (新增、發佈、啟動、升級和移除) ,以及從 App-V 用戶端觀點變更和修改的檔案和登錄位置。 App-V 用戶端作業是在執行 App-V 用戶端的電腦上起始的一系列 PowerShell 命令來執行。

本檔著重於App-V完整基礎結構解決方案。 如需 App-V 與 Configuration Manager 2012 整合的特定資訊,請參閱 App-V 支援的設定

App-V 應用程式生命週期工作會在使用者登入 (預設) 、機器啟動或背景定時作業時觸發。 App-V 用戶端作業的設定,包括發佈伺服器、重新整理間隔、套件腳本啟用和其他設定,都是在用戶端設定期間設定,或使用PowerShell命令進行安裝後設定。 請參閱 TechNet 上的一節: 如何部署 App-V 用戶端 或使用 PowerShell:

get-command *appv*

發佈重新整理

發佈重新整理程式是由在App-V用戶端上執行的數個較小作業所組成。 由於App-V是應用程式虛擬化技術,而不是工作排程技術,因此會利用Windows工作排程器在使用者登入、機器啟動和排程間隔啟用程式。 將用戶端散發到具有正確設定的大型計算機群組時,在上述設定期間設定用戶端是慣用的方法。 這些客戶端設定可以使用下列 PowerShell Cmdlet 進行設定:

  • Add-AppVPublishingServer: 使用提供 App-V 套件的 App-V 發佈伺服器來設定用戶端。

  • Set-AppVPublishingServer: 修改 App-V 發行伺服器的目前設定。

  • Set-AppVClientConfiguration: 修改App-V用戶端的目前設定。

  • Sync-AppVPublishingServer: 手動起始App-V發佈重新整理程式。 這也會在發佈伺服器設定期間建立的排程工作中使用。

下列各節的重點是詳細說明App-V發行重新整理的不同階段期間所發生的作業。 這些主題包括:

  • 新增 App-V 套件

  • 發佈 App-V 套件

新增 App-V 套件

將 App-V 套件新增至客戶端是發佈重新整理程式的第一個步驟。 最終結果與 Add-AppVClientPackage PowerShell 中的 Cmdlet 相同,但在發布重新整理新增程式期間,會連絡已設定的發佈伺服器,並將應用程式的高階清單傳遞回用戶端,以提取更詳細的資訊,而不是單一套件新增作業。 此程式會繼續設定用戶端以進行套件或連線群組新增或更新,然後存取 appv 檔案。 接下來,appv 檔案的內容會展開並放在適當位置的本機操作系統上。 下列是程序的詳細工作流程,假設封裝已設定為錯誤串流。

如何新增App-V套件

  1. 透過發佈重新整理程式的PowerShell或工作順序起始手動起始。

    1. App-V 用戶端會建立 HTTP 連線,並根據目標要求應用程式清單。 發佈重新整理程式支援以機器或用戶為目標。

    2. App-V 發佈伺服器會使用起始目標、用戶或計算機的身分識別,並查詢資料庫中具有許可權的應用程式清單。 應用程式清單會提供為 XML 回應,用戶端會使用該回應將其他要求傳送至伺服器,以取得每個套件的詳細資訊。

  2. App-V 用戶端上的發行代理程式會執行下列串行化的所有動作。

    評估任何未發佈或停用的連線群組,因為無法處理屬於連線群組一部分的套件版本更新。

  3. 藉由識別 [新增] 或 [更新] 作業來設定套件。

    1. App-V 用戶端會利用來自 Windows 的 AppX API,並從發佈伺服器存取 appv 檔案。

    2. 套件檔案隨即開啟,AppXManifest.xml 和 StreamMap.xml 會下載到套件存放區。

    3. 完全串流 StreamMap.xml 中定義的發行區塊數據。 將發佈區塊數據儲存在套件存放區\PkgGUID\VerGUID\Root 中。

      • 圖示:擴充點的目標。

      • 可攜式可執行檔標頭 (PE標頭) :包含磁碟、直接存取或透過文件類型之映像所需基礎資訊的擴充點目標。

      • 腳本:下載文稿目錄以在整個發佈程式中使用。

    4. 填入套件存放區:

      1. 在磁碟上建立疏鬆檔案,以代表所列出任何目錄的解壓縮套件。

      2. 在根目錄下暫存最上層檔案和目錄。

      3. 當目錄在磁碟上列為疏鬆並視需要串流處理時,就會建立所有其他檔案。

    5. 建立計算機目錄專案。 如果封裝中沒有任何 DeploymentConfiguration.xml 檔案) 建立佔位符,請從封裝檔案建立 Manifest.xml 和 DeploymentConfiguration.xml (。

    6. 在登錄 HKLM\Software\Microsoft\AppV\Client\Packages\PkgGUID\Versions\VerGUID\Catalog 中建立套件存放區的位置

    7. 從套件存放區建立Registry.dat檔案至 %ProgramData%\Microsoft\AppV\Client\VReg\{VersionGUID}.dat

    8. 向 App-V 內核模式驅動程式 HKLM\Microsoft\Software\AppV\MAV 註冊套件

    9. 從 AppxManifest.xml 或 DeploymentConfig.xml 檔案叫用腳本以進行套件新增時間。

  4. 藉由新增和啟用或停用來設定連線群組。

  5. 拿掉未發佈至目標 (用戶或計算機) 的物件。

    注意 這不會執行套件刪除,而是移除特定目標 (使用者或計算機) 的整合點,並針對全域發佈的) 移除計算機類別目錄檔案 (用戶類別目錄檔案。

  6. 根據用戶端組態叫用背景載入掛接。

  7. 已擁有機器或使用者發佈資訊的套件會立即還原。

    注意 此條件是移除的乘積,而不會在套件的背景新增的情況下解除發佈。

這會完成發佈重新整理程式的App-V套件新增。 下一個步驟是將套件發佈至特定目標 (計算機或使用者) 。

套件會新增檔案和登錄數據。

發佈 App-V 套件

在發佈重新整理作業期間,特定發佈作業 (Publish-AppVClientPackage) 將專案新增至使用者目錄、將權利對應至使用者、識別本地存儲,並完成任何整合步驟。 以下是詳細步驟。

如何發佈和 App-V 套件

  1. 套件專案會新增至用戶目錄

    1. 用戶目標套件:UserDeploymentConfiguration.xml 和 UserManifest.xml 會放在使用者類別目錄的計算機上

    2. 以 (全域) 套件為目標的計算機:UserDeploymentConfiguration.xml 放在計算機目錄中

  2. 在 HKLM\Software\Microsoft\AppV\MAV 向用戶註冊套件的核心模式驅動程式

  3. 執行整合工作。

    1. 建立擴充點。

    2. 將備份資訊儲存在使用者的登錄和漫遊配置檔中, (快捷方式備份) 。

      注意 如果封裝未發佈,這會啟用還原擴充點。

    3. 執行以發佈時間為目標的腳本。

發佈屬於連線群組一部分的App-V套件與上述程式非常類似。 針對連線群組,儲存特定目錄資訊的路徑包含 PackageGroups 作為目錄目錄的子系。 如需詳細資訊,請檢閱上述計算機和使用者目錄資訊。

套件新增檔案和登錄數據 - 全域。

應用程式啟動

在發佈重新整理程式之後,用戶會啟動並接著重新啟動App-V應用程式。 此程式非常簡單且已優化,可在最少的網路流量下快速啟動。 App-V 用戶端會檢查使用者目錄的路徑,以取得在發佈期間建立的檔案。 建立啟動套件的許可權之後,App-V 用戶端會建立虛擬環境、開始串流任何必要的數據,並在虛擬環境建立期間套用適當的指令清單和部署組態檔。 針對特定封裝和應用程式建立並設定虛擬環境之後,應用程式就會啟動。

如何啟動App-V應用程式

  1. 用戶按下快捷方式或檔案類型調用來啟動應用程式。

  2. App-V 用戶端會驗證下列檔案的用戶類別目錄是否存在

    • UserDeploymentConfiguration.xml

    • UserManifest.xml

  3. 如果檔案存在,則應用程式會獲得該特定用戶的許可權,且應用程式將會啟動啟動程式。 目前沒有任何網路流量。

  4. 接下來,App-V 用戶端會檢查登錄中是否找到為 App-V 用戶端服務註冊的套件路徑。

  5. 尋找封裝存放區的路徑時,會建立虛擬環境。 如果這是第一次啟動,主要功能區塊會在出現時下載。

  6. 下載之後,App-V 用戶端服務會取用指令清單和部署組態檔來設定虛擬環境,並載入所有 App-V 子系統。

  7. 應用程式隨即啟動。 針對套件存放區中任何遺漏的檔案, (疏鬆檔案) ,App-V 會視需要串流錯誤檔案。

    套件新增檔案和登錄數據 - 數據流。

升級 App-V 套件

App-V 5 套件升級程式與舊版 App-V 不同。 App-V 在授權給不同使用者的計算機上支援相同套件的多個版本。 套件版本可以隨時新增,因為套件存放區和目錄會以新的資源更新。 新增新版本資源的唯一特定程式是記憶體優化。 在升級期間,只會將新檔案新增至新的版本存放區位置,並針對未變更的檔案建立硬式連結。 這可減少整體記憶體,方法是只在一個磁碟位置上呈現檔案,然後將它投影到磁碟上具有檔案位置專案的所有資料夾。 升級 App-V 套件的特定詳細資料如下:

如何升級App-V套件

  1. App-V 用戶端會執行發佈重新整理,並探索較新版本的 App-V 套件。

  2. 套件專案會新增至新版本的適當目錄

    1. 用戶目標套件:UserDeploymentConfiguration.xml 和 UserManifest.xml 位於 appdata\roaming\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID 的使用者目錄計算機上

    2. 以 (全域) 套件為目標的計算機:UserDeploymentConfiguration.xml 放在計算機目錄中%programdata%\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID

  3. 在 HKLM\Software\Microsoft\AppV\MAV 向用戶註冊套件的核心模式驅動程式

  4. 執行整合工作。

    • 從指令清單和動態組態檔案整合擴充點 (EP) 。
    1. 檔案型 EP 資料會儲存在 AppData 資料夾中,並利用套件存放區的連接點。

    2. 當新版本可供使用時,第 1 版的 IP 已經存在。

    3. 對於任何較新或更新的擴充點,擴充點會切換至計算機或用戶目錄中的第 2 版位置。

  5. 執行以發佈時間為目標的腳本。

  6. 視需要並存安裝元件。

升級使用中的App-V套件

從 App-V 5 SP2 開始:如果您嘗試升級使用者正在使用的套件,升級工作會處於擱置狀態。 升級將在稍後根據下列規則執行:

工作類型 適用的規則

以用戶為基礎的工作,例如,將套件發佈給使用者

暫止工作會在用戶註銷后再重新登入之後執行。

以全域為基礎的工作,例如全域啟用聯機群組

當電腦關閉並重新啟動時,將會執行擱置中的工作。

當工作處於擱置狀態時,App-V 用戶端也會產生暫止工作的登錄機碼,如下所示:

以用戶為基礎或以全域為基礎的工作 產生登錄機碼的位置

以用戶為基礎的工作

KEY_CURRENT_USER\Software\Microsoft\AppV\Client\PendingTasks

以全域為基礎的工作

HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\PendingTasks

必須先完成下列作業,使用者才能使用較新版本的套件:

工作 詳細資料

將套件新增至計算機

此工作是計算機專屬的工作,您可以完成上述 一節中的步驟,隨時執行此工作。

發佈套件

如需步驟,請參閱上述的套件發佈一節。 此程式需要您更新系統上的擴充點。 當您完成這項工作時,終端用戶無法使用應用程式。

使用下列範例案例作為更新套件的指南。

案例 需求

當您嘗試升級時,App-V 套件不在使用中

套件的下列任何元件都無法使用:虛擬應用程式、COM 伺服器或殼層擴充功能。

系統管理員會發佈較新版本的套件,而升級會在下次啟動套件內的元件或應用程式時運作。 新版本的套件會進行串流處理並執行。 在此案例中,App-V 5 SP2 與舊版 App-V 5 沒有任何變更。

當系統管理員發佈較新版本的套件時,App-V 套件正在使用中

App-V 用戶端會將升級作業設定為擱置中,這表示它已排入佇列,並在套件未使用時執行。

如果封裝應用程式正在使用中,用戶會關閉虛擬應用程式,之後就會進行升級。

如果套件具有 Windows 檔案總管永久載入的 Office 2013) (殼層擴充功能,則無法登入使用者。 用戶必須註銷並重新登入,才能起始 App-V 套件升級。

全域與用戶發佈

App-V 套件可以用兩種方式之一發佈;將 App-V 套件實體給特定使用者或使用者群組的使用者,以及可為電腦的所有使用者將 App-V 套件實體化為整部電腦的全域使用者。 一旦套件升級已加上,且 App-V 套件未使用,請考慮下列兩種發行類型:

  • 全域發佈:應用程式會發佈至計算機;該電腦上的所有使用者都可以使用它。 升級會在 App-V 用戶端服務啟動時發生,這實際上表示計算機會重新啟動。

  • 用戶已發佈:應用程式會發佈給使用者。 如果電腦上有多個使用者,則可以將應用程式發佈至使用者的子集。 當使用者登入或再次 (定期發佈、ConfigMgr 原則重新整理和評估,或 App-V 定期發佈/重新整理,或透過 PowerShell 命令明確地) 時,就會發生升級。

拿掉 App-V 套件

在完整基礎結構中移除App-V應用程式是未發佈的作業,不會執行套件移除。 此程式與上述發佈程式相同,但不新增移除程式會反轉針對App-V套件所做的變更。

修復App-V套件

修復作業非常簡單,但可能會影響計算機上的許多位置。 拿掉先前提及的 [寫入時複製 () 位置,並取消整合擴充點,然後重新整合。 請檢閱在登錄中登錄的位置,以檢閱其數據放置位置。 此作業會自動完成,而且除了從App-V用戶端控制台或透過PowerShell (Repair-AppVClientPackage) 來起始修復作業之外,沒有任何系統管理控制。

整合 App-V 套件

App-V 用戶端和套件架構可在新增和發佈套件期間,提供與本機操作系統的特定整合。 三個檔案會定義 App-V 套件的整合或擴充點:

  • AppXManifest.xml:儲存在封裝內部,其中包含儲存在套件存放區和使用者配置檔中的後援複本。 包含在排序程序期間建立的選項。

  • DeploymentConfig.xml:提供計算機和使用者型整合擴充點的設定資訊。

  • UserConfig.xml:Deploymentconfig.xml 的子集,只提供用戶型設定,且僅以用戶為基礎的擴充點為目標。

整合規則

當 App-V 應用程式發佈至具有 App-V 用戶端的電腦時,會執行一些特定動作,如下列清單所述:

  • 全域發佈:快捷方式會儲存在 [所有使用者] 配置檔位置,而其他擴充點則會儲存在 HKLM 登錄區中的登錄中。

  • 用戶發佈:快捷方式會儲存在目前的用戶帳戶配置檔中,而其他擴充點則會儲存在 HKCU Hive 的登錄中。

  • 備份與還原:現有的原生應用程式數據和登錄 (,例如 FTA 註冊) 會在發佈期間備份。

    1. App-V 套件會根據最後一個整合套件獲得擁有權,其中的擁有權會傳遞給最新發佈的App-V應用程式。

    2. 當擁有的 App-V 套件未發佈時,擁有權會從一個 App-V 套件轉移至另一個套件。 這不會起始數據或登錄的還原。

    3. 在每個擴充點上取消發佈或移除最後一個封裝時,還原備份的數據。

擴充點

App-V 發佈檔案 (指令清單和動態組態) 提供數個擴充點,讓應用程式能夠與本機操作系統整合。 這些擴充點會執行一般應用程式安裝工作,例如放置快捷方式、建立檔類型關聯,以及註冊元件。 由於這些是虛擬化的應用程式,其安裝方式與傳統應用程式不同,因此有一些差異。 以下是本節所涵蓋的擴充點清單:

  • 快捷方式

  • 檔類型關聯

  • Shell 擴充功能

  • Com

  • 軟體用戶端

  • 應用程式功能

  • URL 通訊協議處理程式

  • AppPath

  • 虛擬應用程式

快捷方式

快捷鍵是與OS整合的其中一個基本元素,也是直接用戶啟動App-V應用程式的介面。 在發佈和解除發佈App-V應用程式期間。

從套件指令清單和動態元件 XML 檔案中,您可以在類似下列的區段中找到特定應用程式可執行檔案的路徑:

<Extension Category="AppV.Shortcut">
          <Shortcut>
            <File>[{Common Desktop}]\Adobe Reader 9.lnk</File>
            <Target>[{AppVPackageRoot}]\Reader\AcroRd32.exe</Target>
            <Icon>[{Windows}]\Installer\{AC76BA86-7AD7-1033-7B44-A94000000001}\SC_Reader.ico</Icon>
            <Arguments />
            <WorkingDirectory />
            <ShowCommand>1</ShowCommand>
            <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
          </Shortcut>
        </Extension>

如先前所述,App-V 快捷方式預設會根據重新整理作業放置在使用者的配置檔中。 全域重新整理會在 [所有使用者] 配置檔中放置快捷方式,而使用者重新整理會將它們儲存在特定使用者的配置檔中。 實際的可執行檔會儲存在封裝存放區中。 ICO 檔案的位置是 App-V 套件中的令牌化位置。

檔類型關聯

App-V 用戶端會在發佈期間管理本機操作系統檔類型關聯,讓用戶能夠使用檔類型調用,或開啟具有特別註冊擴展名的檔案 (.docx) 啟動 App-V 應用程式。 檔案類型關聯會出現在指令清單和動態組態檔中,如下列範例所示:

<Extension Category="AppV.FileTypeAssociation">
          <FileTypeAssociation>
            <FileExtension MimeAssociation="true">
              <Name>.xdp</Name>
              <ProgId>AcroExch.XDPDoc</ProgId>
              <ContentType>application/vnd.adobe.xdp+xml</ContentType>
            </FileExtension>
            <ProgId>
              <Name>AcroExch.XDPDoc</Name>
              <Description>Adobe Acrobat XML Data Package File</Description>
              <EditFlags>65536</EditFlags>
              <DefaultIcon>[{Windows}]\Installer\{AC76BA86-7AD7-1033-7B44-A94000000001}\XDPFile_8.ico</DefaultIcon>
              <ShellCommands>
                <DefaultCommand>Read</DefaultCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Open</Name>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine>
                </ShellCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Printto</Name>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe"  /t "%1" "%2" "%3" "%4"</CommandLine>
                </ShellCommand>
                <ShellCommand>
                  <ApplicationId>[{AppVPackageRoot}]\Reader\AcroRd32.exe</ApplicationId>
                  <Name>Read</Name>
                  <FriendlyName>Open with Adobe Reader 9</FriendlyName>
                  <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine>
                </ShellCommand>
              </ShellCommands>
            </ProgId>
          </FileTypeAssociation>
        </Extension>

注意 在這裡範例中:

  • <Name>.xdp</Name> 是延伸模組

  • <Name>AcroExch.XDPDoc</Name> 是指向相鄰 ProgId (的 ProgId 值)

  • <CommandLine>"[{AppVPackageRoot}]\Reader\AcroRd32.exe" "%1"</CommandLine> 是命令行,指向應用程式可執行檔

殼層延伸

殼層擴充功能會在排序程式期間自動內嵌在封裝中。 當套件全域發佈時,殼層擴充功能會為使用者提供與本機安裝應用程式相同的功能。 應用程式不需要在用戶端上進行其他設定或設定,即可啟用殼層擴充功能。

使用殼層擴充功能的需求:

  • 包含內嵌殼層延伸模組的套件必須全域發佈。

  • 應用程式、Sequencer 和 App-V 用戶端的「位」必須相符,否則殼層擴充功能將無法運作。 例如:

    • 應用程式的版本是64位。

    • Sequencer 正在 64 位電腦上執行。

    • 套件正在傳遞至64位App-V用戶端電腦。

下表顯示支援的殼層延伸模組。

處理器 描述

操作功能表處理程式

將功能表項新增至操作功能表。 它會在操作功能表顯示之前呼叫。

拖放處理程式

控制以滑鼠右鍵按下拖放動作,並修改出現的操作功能表。

卸除目標處理程式

控制將數據物件拖放到卸除目標之後的動作,例如檔案。

數據物件處理程式

控制將檔案複製到剪貼簿或拖放到置放目標之後的動作。 它可以為置放目標提供其他剪貼簿格式。

屬性表處理程式

取代或加入頁面至 對象的屬性表對話方塊。

資訊提示處理程式

允許擷取專案的旗標和資訊提示資訊,並在滑鼠停留時顯示在快顯工具提示內。

數據行處理程式

允許在 [Windows 檔案總管詳細數據] 檢視中建立和顯示自訂 數據行。 它可用來擴充排序和分組。

預覽處理程式

啟用要在 Windows 檔案總管預覽窗格中顯示之檔案的預覽。

Com

App-V 用戶端支援發佈支援 COM 整合和虛擬化的應用程式。 COM 整合可讓App-V用戶端在本機作業系統上註冊 COM物件,並虛擬化物件。 基於本檔的目的,COM 物件的整合需要額外的詳細數據。

App-V 支援使用兩種進程類型,將 COM 物件從封裝註冊到本機操作系統:跨進程和同進程。 註冊 COM 對像是透過一種或多個作業模式的組合來完成,適用於包含 off、Isolated 和 Integrated 的特定 App-V 套件。 整合模式是針對跨進程或進程內類型所設定。 COM 模式和類型的設定是使用動態組態檔 (deploymentconfig.xml 或 userconfig.xml) 來完成。

App-V 整合的詳細數據位於: https://go.microsoft.com/fwlink/?LinkId=392834

軟體用戶端和應用程式功能

App-V 支援特定軟體用戶端和應用程式功能擴充點,可讓虛擬化應用程式向操作系統的軟體客戶端註冊。 這可讓使用者針對電子郵件、立即訊息和媒體播放機等作業選取預設程式。 這項作業會在 [設定程式存取] 和 [計算機預設值] 的控制面板中執行,並在指令清單或動態組態檔中排序期間進行設定。 只有當 App-V 應用程式全域發佈時,才支援應用程式功能。

App-V 型郵件客戶端的軟體用戶端註冊範例。

    <SoftwareClients Enabled="true">
      <ClientConfiguration EmailEnabled="true" />
      <Extensions>
        <Extension Category="AppV.SoftwareClient">
          <SoftwareClients>
            <EMail MakeDefault="true">
              <Name>Mozilla Thunderbird</Name>
              <Description>Mozilla Thunderbird</Description>
              <DefaultIcon>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe,0</DefaultIcon>
              <InstallationInformation>
                <RegistrationCommands>
                  <Reinstall>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /SetAsDefaultAppGlobal</Reinstall>
                  <HideIcons>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /HideShortcuts</HideIcons>
                  <ShowIcons>"[{ProgramFilesX86}]\Mozilla Thunderbird\uninstall\helper.exe" /ShowShortcuts</ShowIcons>
                </RegistrationCommands>
                <IconsVisible>1</IconsVisible>
                <OEMSettings />
              </InstallationInformation>
              <ShellCommands>
                <ApplicationId>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe</ApplicationId>
                <Open>"[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe" -mail</Open>
              </ShellCommands>
              <MAPILibrary>[{ProgramFilesX86}]\Mozilla Thunderbird\mozMapi32_InUse.dll</MAPILibrary>
              <MailToProtocol>
                <Description>Thunderbird URL</Description>
                <EditFlags>2</EditFlags>
                <DefaultIcon>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe,0</DefaultIcon>
                <ShellCommands>
                  <ApplicationId>[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe</ApplicationId>
                  <Open>"[{ProgramFilesX86}]\Mozilla Thunderbird\thunderbird.exe" -osint -compose "%1"</Open>
                </ShellCommands>
              </MailToProtocol>
            </EMail>
          </SoftwareClients>
        </Extension>
      </Extensions>
    </SoftwareClients>

注意 在這裡範例中:

  • <ClientConfiguration EmailEnabled="true" />是整合用戶端 Email 整體軟體客戶端設定

  • <EMail MakeDefault="true">是旗標,可將特定 Email 客戶端設定為預設 Email 用戶端

  • <MAPILibrary>[{ProgramFilesX86}]\Mozilla Thunderbird\mozMapi32_InUse.dll</MAPILibrary> 是MAPI dll註冊

URL 通訊協議處理程式

應用程式不一定一律使用檔案類型調用來特別稱為虛擬化應用程式。 例如,在支援在檔或網頁內內嵌 mailto: 連結的應用程式中,用戶按兩下mailto: 連結,並預期會取得其已註冊的郵件用戶端。 App-V 支援可根據每個套件向本機操作系統註冊的 URL 通訊協定處理程式。 在排序期間,URL 通訊協定處理程式會自動新增至封裝。

如果有多個應用程式可以註冊特定的 URL 通訊協定處理程式,則可以使用動態組態檔來修改行為,並針對不應該啟動主要應用程式的應用程式隱藏或停用此功能。

AppPath

AppPath 擴充點支援直接從操作系統呼叫App-V應用程式。 這通常會根據操作系統從 [執行] 或 [開始畫面] 完成,這可讓系統管理員從操作系統命令或腳本提供 App-V 應用程式的存取權,而不需要呼叫可執行檔的特定路徑。 因此,它可避免在所有系統上修改系統路徑環境變數,因為它是在發佈期間完成的。

AppPath 擴充點會在指令清單或動態組態檔中設定,並在使用者發佈期間儲存在本機計算機的登錄中。 如需 AppPath 的詳細資訊,請檢閱: https://go.microsoft.com/fwlink/?LinkId=392835

虛擬應用程式

此子系統提供排序期間所擷取的應用程式清單,通常由其他App-V元件取用。 您可以使用動態組態檔來停用屬於特定應用程式的擴充點整合。 例如,如果封裝包含兩個應用程式,則可以停用屬於一個應用程式的所有擴充點,以便只允許整合其他應用程式的擴充點。

擴充點規則

上述的擴充點會根據套件的發佈方式,整合到操作系統中。 全域發佈會將擴充點放在公用計算機位置,其中用戶發佈會將擴充點放在使用者位置。 例如,在桌面上建立並全域發佈的快捷方式會產生快捷方式 (%Public%\Desktop) 的檔案數據,以及 HKLM\Software\Classes) (登錄數據。 相同的快捷方式會將檔案數據 (%UserProfile%\Desktop) 和登錄數據 (HKCU\Software\Classes) 。

擴充點的發佈方式並不完全相同,其中某些擴充點需要全域發佈,而其他擴充點則需要在傳遞的特定操作系統和架構上進行排序。 以下是描述這兩個主要規則的數據表。

虛擬擴充功能 需要目標OS排序 需要全域發佈

快捷方式

檔類型關聯

URL 通訊協定

X

AppPaths

X

COM 模式

軟體用戶端

X

應用程式功能

X

X

操作功能表處理程式

X

X

拖放處理程式

X

數據物件處理程式

X

屬性表處理程式

X

資訊提示處理程式

X

數據行處理程式

X

Shell 擴充功能

X

Browser Helper 物件

X

X

Active X 物件

X

X

動態設定處理

將App-V套件部署到一部電腦或使用者非常簡單。 不過,當組織跨商務線和地理與政治界限部署AppV應用程式時,一次使用一組設定來排序應用程式的能力就變得不可能。 App-V 是針對此案例所設計,因為它會在指令清單檔案中排序期間擷取特定的設定和組態,但也支援修改動態組態檔。

App-V 動態設定可讓您在計算機層級或使用者層級指定套件的原則。 動態組態檔可讓排序工程師修改封裝的設定、排序後,以解決個別使用者或計算機群組的需求。 在某些情況下,可能需要對應用程式進行修改,以在App-V環境中提供適當的功能。 例如,可能需要修改 _*config.xml 檔案,以允許在應用程式執行期間於指定的時間執行特定動作,例如停用mailto擴充功能以防止虛擬化應用程式覆寫另一個應用程式的延伸模組。

App-V 套件包含 appv 套件檔案內的指令清單檔案,代表排序作業,並且是選擇的原則,除非動態組態檔案指派給特定套件。 排序後,可以修改動態組態檔案,以允許將應用程式發佈至不同的桌面或具有不同擴充點的使用者。 這兩個動態組態檔是動態部署組態 (DDC) 和動態使用者設定 (DUC) 檔案。 本節著重於指令清單和動態組態檔的組合。

動態組態檔的範例

下列範例顯示在發佈之後和正常作業期間,指令清單、部署組態和使用者組態檔案的組合。 這些範例是每個檔案的縮寫範例。 其目的是只顯示檔案的組合,而不是完整描述每個檔案中可用的特定類別。 如需詳細資訊,請參閱App-V 5排序指南:: https://go.microsoft.com/fwlink/?LinkID=269810

清單

<appv:Extension Category="AppV.Shortcut">
     <appv:Shortcut>
          <appv:File>[{Common Programs}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot}]\7zFM exe.O.ico</appv:Icon>
     </appv:Shortcut>
</appv:Extension>

部署組態

<MachineConfiguration>
     <Subsystems>
          <Registry>
               <Include>
                    <Key Path= "\REGISTRY\Machine\Software\7zip">
                    <Value Type="REG_SZ" Name="Config" Data="1234"/>
                    </Key>
               </Include>
          </Registry>
     </Subsystems>

使用者設定

<UserConfiguration>
     <Subsystems>
<appv:ExtensionCategory="AppV.Shortcut">
     <appv:Shortcut>
          <appv:File>[{Desktop}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot}]\7zFM exe.O.ico</appv:Icon>
     </appv:Shortcut>
</appv:Extension>
     </Subsystems>
<UserConfiguration>
     <Subsystems>
<appv:Extension Category="AppV.Shortcut">
     <appv:Shortcut>
          <appv:Fìle>[{Desktop}]\7-Zip\7-Zip File Manager.lnk</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot}]\7zFM.exe.O.ico</appv:Icon>
     </appv:Shortcut>
     <appv:Shortcut>
          <appv:File>[{Common Programs}]\7-Zip\7-Zip File Manager.Ink</appv:File>
          <appv:Target>[{AppVPackageRoot}]\7zFM.exe</appv:Target>
          <appv:Icon>[{AppVPackageRoot)]\7zFM.exe.O.ico</appv: Icon>
     </appv:Shortcut>
</appv:Extension>
     </Subsystems>
<MachineConfiguration>
     <Subsystems>
          <Registry>
               <Include>
                    <Key Path="\REGISTRY\Machine\Software\7zip">
                    <Value Type=”REG_SZ" Name="Config" Data="1234"/>
               </Include>
          </Registry>
     </Subsystems>

並存元件

App-V 支援在虛擬應用程式發佈期間,於用戶端上排序和部署期間自動封裝並存 (SxS) 元件。 App-V 5 SP2 支援在排序期間擷取排序電腦上不存在之元件的 SxS 元件。 對於由 Visual C++ (第 8 版和更新) 和/或 MSXML 運行時間所組成的元件,Sequencer 會自動偵測並擷取這些相依性,即使它們未在監視期間安裝也一樣。 並存元件功能會移除舊版 App-V 的限制,其中 App-V Sequencer 不會擷取已存在於排序工作站上的元件,並封存每個套件限制為一位版本的元件。 此行為會導致將App-V應用程式部署至用戶端,而遺失所需的SxS元件,導致應用程式啟動失敗。 這會強制封裝程式記錄,然後確定套件所需的所有元件都已在使用者的用戶端操作系統上本機安裝,以確保對虛擬應用程序的支援。 根據元件數目和所需相依性缺少應用程式檔,此工作同時是管理和實作挑戰。

App-V 中的並存元件支援具有下列功能。

  • 無論元件是否已安裝在排序工作站上,在排序期間自動擷取 SxS 元件。

  • App-V 用戶端會在發佈時自動將必要的 SxS 元件安裝到用戶端電腦,而這些元件不存在。

  • Sequencer 會報告 Sequencer 報告機制中的 VC 運行時間相依性。

  • Sequencer 可讓您選擇不封裝已安裝在 Sequencer 上的元件,以支援先前已在目標電腦上安裝元件的案例。

自動發佈 SxS 元件

在使用 SxS 元件發佈 App-V 套件期間,App-V 用戶端會檢查電腦上是否有元件。 如果元件不存在,用戶端會將元件部署至計算機。 屬於連線群組一部分的套件將依賴屬於基底套件一部分的並存元件安裝,因為連接群組不包含任何有關元件安裝的資訊。

注意 取消發佈或移除具有元件的封裝並不會移除該封裝的元件。

客戶端記錄

App-V 用戶端會以標準 ETW 格式將資訊記錄到 Windows 事件記錄檔。 您可以在事件查看器的 [應用程式和服務記錄檔\Microsoft\AppV\Client] 下找到特定的 App-V 事件。

注意 在 App-V 5.0 SP3 中,某些記錄已合併並移至下列位置:

Event logs/Applications and Services Logs/Microsoft/AppV/ServiceLog

如需已移動記錄的清單,請參閱 關於App-V 5.0 SP3

以下所述記錄的事件有三種特定類別。

管理員:記錄套用至 App-V 用戶端之組態的事件,並包含主要警告和錯誤。

操作:記錄一般 App-V 執行和個別元件的使用方式,以建立 App-V 用戶端上已完成之 App-V 作業的稽核記錄。

虛擬應用程式:記錄虛擬應用程式啟動並使用虛擬化子系統。