應用程式發佈和客戶端互動
適用於:
- Windows 10
- Windows 11
本文提供一般 App-V 用戶端作業及其與本機操作系統整合的技術資訊。
Sequencer 所建立的 App-V 套件檔案
Sequencer 會建立 App-V 套件,並產生虛擬化應用程式。 排序程式會建立下列檔案:
檔案 | 描述 |
---|---|
.appv | - 主要套件檔案,其中包含從排序程式擷取的資產和狀態資訊。 - 封裝檔案的架構、發佈資訊,以及令牌化窗體中的登錄,可在傳遞時重新套用至計算機和特定使用者。 |
.MSI | 您可以用來手動部署 .appv 檔案或使用第三方部署平臺的可執行部署包裝函式。 |
_DeploymentConfig.XML | 檔案,用來自定義封裝中所有應用程式的預設發佈參數,該套件會全域部署至執行App-V用戶端之電腦上的所有使用者。 |
_UserConfig.XML | 檔案,用來自定義封裝中所有應用程式的發佈參數,該套件是部署至執行App-V用戶端之電腦上的特定使用者。 |
Report.xml | 排序程式所產生的訊息摘要,包括省略的驅動程式、檔案和登錄位置。 |
.CAB | 選擇性:用來自動重建先前循序虛擬應用程式封裝的套件加速器檔案。 |
.appvt | 選擇性:用來保留常用之 Sequencer 設定的 Sequencer 範本檔案。 |
若要深入瞭解排序,請參閱 如何使用App-V排序新的應用程式。
appv 檔案中有什麼內容?
appv 檔案是一個容器,可將 XML 和非 XML 檔案一起儲存在單一實體中。 此檔案是根據 OPC) 標準 (開放式封裝慣例,以 AppX 格式建置而來。
若要檢視 appv 檔案內容,請複製套件,然後將複製的檔案重新命名為 .zip 擴展名。
appv 檔案包含下列資料夾和檔案,可在建立和發表虛擬應用程式時使用:
名稱 | 類型 | 描述 |
---|---|---|
根目錄 | 檔案資料夾 | 包含排序期間所擷取之虛擬化應用程式之檔案系統的目錄。 |
[Content_Types].xml | XML 檔案 | appv 檔案中的核心內容類型清單 (例如 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 Windows PowerShell Cmdlet 在安裝期間或之後進行設定,這會修改 HKLM\Software\Microsoft\AppV\Client\Streaming 機碼) 底下的本機登錄 (PackageInstallationRoot 值。 套件存放區必須位於用戶端操作系統的本機路徑。 個別套件會儲存在套件存放區中以套件 GUID 和版本 GUID 命名的子目錄中。
以下是特定應用程式路徑的範例:
C:\ProgramData\App-V\PackGUID\VersionGUID
若要在安裝期間變更套件存放區的預設位置,請參閱 啟用App-V桌面用戶端。
共用內容存放區
如果在共用內容存放區模式中設定App-V用戶端,當數據流發生錯誤時,不會將任何數據寫入磁碟,這表示套件需要最少的本機磁碟空間, (發佈數據) 。 在本機記憶體可能受限的 VDI 環境中,請務必盡可能少使用磁碟空間。 您可以從 SAN) 等高效能網路位置 (串流應用程式,以將磁碟空間使用量降至最低。 如需詳細資訊,請參閱 Microsoft App-V 5.0 - 幕後的共用內容存放區。
注意
即使您使用App-V用戶端的共用內容存放區設定,計算機和套件存放區也必須位於本機磁碟驅動器上。
套件目錄
App-V 用戶端會管理下列檔案型位置:
- 用戶和計算機) (目錄。
- 登錄位置— 取決於套件發佈的目標方式。 計算機有目錄 (資料存放區) ,以及每個個別用戶的目錄。 計算機目錄會儲存適用於所有使用者或任何特定使用者的全域資訊,而使用者類別目錄則會儲存適用於特定用戶的資訊。 目錄是動態組態和指令清單檔案的集合;每個套件版本都有檔案和登錄的離散數據。
機器目錄
您可以在 %programdata%\Microsoft\AppV\Client\Catalog\ 資料夾中找到此表格中所述的位置。
位置 | |
---|---|
描述 | 儲存在新增和發佈套件時,可供計算機上的使用者使用的套件檔。 不過,如果套件在發佈時為「全域」,則所有使用者都可以使用整合。 如果套件是非全域的,則整合只會針對特定用戶發佈,但用戶端計算機上仍有一些全域資源會修改並顯示 (例如當套件目錄位於共用磁碟位置時) 。 如果計算機上的使用者可以使用套件 (全域或非全域) ,則指令清單會儲存在計算機目錄中。 當封裝全域發佈時,會有儲存在機器類別目錄中的動態組態檔;因此,判斷封裝是否為全域是根據計算機目錄中是否 (UserDeploymentConfiguration 檔案) 定義。 |
默認儲存位置 | %programdata%\Microsoft\AppV\Client\Catalog<br> 此位置與套件存放區位置不同。 套件存放區是封裝檔案的黃金或原始複本。 |
機器目錄中的檔案 | - Manifest.xml - DeploymentConfiguration.xml - UserManifest.xml (全域發佈的套件) - UserDeploymentConfiguration.xml (全域發佈的套件) |
其他計算機目錄位置,當封裝是連線群組的一部分時使用 | 除了先前提及的預設儲存位置之外,下列位置也是特定封裝位置: %programdata%\Microsoft\AppV\Client\Catalog\PackageGroups\ConGroupGUID\ConGroupVerGUID |
當封裝是連線群組的一部分時,計算機目錄中的其他檔案 | - PackageGroupDescriptor.xml - UserPackageGroupDescriptor.xml (全域發佈的連線群組) |
用戶目錄
您可以在 appdata\roaming\Microsoft\AppV\Client\Catalog\ 資料夾中找到此表格中所述的位置。
位置 | |
---|---|
描述 | 在發佈程式期間建立。 包含用來發佈套件,以及確保在啟動時將套件布建給特定用戶的資訊。 建立於漫遊位置,並包含使用者特定的發佈資訊。 為用戶發行套件時,原則檔案會儲存在用戶類別目錄中。 同時,指令清單的複本也會儲存在用戶類別目錄中。 拿掉使用者的套件權利時,會從使用者類別目錄中移除相關的套件檔案。 查看使用者目錄,系統管理員可以檢視動態組態檔是否存在,這表示該套件是該用戶的許可權。 針對漫遊使用者,用戶類別目錄必須位於漫遊或共用位置,才能保留預設以用戶為目標的舊版 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 必須根據登錄>>的 NATIVE 套件中填入的位置,將最多三個不同的登錄位置合併成單一檢視。 對登錄數據提出要求時,它會依序尋找,直到找到所要求的數據為止。 這表示如果有值儲存在一個要處理的位置,則不會繼續前往其他位置,不過,如果在[無數據] 位置中沒有數據,則會繼續進行封裝,然後移至 [原生位置],直到找到適當的數據為止。
登錄位置
有兩個套件登錄位置和兩個連線群組位置,其中 App-V 用戶端會儲存登錄資訊,視套件是個別發佈還是作為連線群組的一部分而定。 封裝有三個,連線群組有三個,由 VREG 建立和管理。 套件和連線群組的設定不會分享:
單一套件 VReg
下表中的登錄位於 Registry\Client\Packages\PkgGUID\ 資料夾中。
位置 | 說明 |
---|---|
牛 | - 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 - 使用者登錄類別\Client\Packages\PkgGUID\Versions\VerGUID\Registry |
本地 | - 原生應用程式登錄位置 |
線上群組 VReg
下表中的登錄位於 Machine Registry\Client\PackageGroups\GrpGUID\ 和 User Registry Classes\Client\PackageGroups\GrpGUID\ 資料夾中。
位置 | 說明 |
---|---|
牛 | - Machine Registry\Client\PackageGroups\GrpGUID\REGISTRY (只有提升程式可以寫入) - User Registry\Client\PackageGroups\GrpGUID\REGISTRY (所有寫入 HKCU 的專案,但 Software\Classes) - 使用者登錄類別\Client\PackageGroups\GrpGUID\REGISTRY |
套件 | - Machine Registry\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY - 使用者登錄類別\Client\PackageGroups\GrpGUID\Versions\VerGUID\REGISTRY |
本地 | - 原生應用程式登錄位置 |
HKLM 有兩個無一個的一個部署位置:提升許可權和非提升許可權的進程。 提升許可權的程式一律會將 HKLM 變更寫入 HKLM 底下的安全的。。 非提升許可權的進程一律會將 HKLM 變更寫入 HKCU\Software\Classes 底下的不安全的。。 當應用程式從 HKLM 讀取變更時,提升許可權的進程會讀取 HKLM 下安全的 HKLM 變更。 兩者的非提升許可權讀取,優先於不安全的在 UNSEC 中所做的變更。
傳遞金鑰
系統管理員可以使用傳遞密鑰,將特定金鑰設定為只從原生登錄讀取,而略過套件和部署位置。 傳遞位置是全域傳送至計算機 (不是套件特定的) ,而且可以藉由將路徑新增至密鑰來設定,而此路徑應視為傳遞至密鑰 HKLM\Software\Microsoft\AppV\Subsystem\VirtualRegistry 之稱為 PassThroughPaths 的REG_MULTI_SZ值。 出現在這個多字串值下的任何索引鍵 (及其子系) 都會視為傳遞。
根據預設,下列位置會設定為傳遞位置:
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 會管理套件存放區,也就是從 appv 檔案儲存擴充資產檔案的位置。 根據預設,此位置會儲存在 %ProgramData%\App-V,而且僅受限於可用磁碟空間的儲存功能。 套件存放區是由套件和版本的 GUID 組織,如上一節所述。
新增套件
除了具有App-V用戶端的電腦之外,還會暫存App-V套件。 App-V 用戶端提供隨選預備。 發佈或手動輸入 Add-AppVClientPackage Cmdlet 時,數據結構會建置在套件存放區中, (C:\programdata\App-V\{PkgGUID}\{VerGUID}) 。 在 StreamMap.xml 檔案中定義的發佈區塊中識別的套件檔案會新增至系統,並暫存最上層資料夾和子檔案,以確保啟動時有適當的應用程式資產存在。
掛接套件
您可以輸入 Mount-AppVClientPackage PowerShell Cmdlet 或使用 App-V 用戶端 UI 下載套件,明確載入套件。 這項作業會將整個封裝完全載入封裝存放區。
串流套件
App-V 用戶端可以設定為變更串流的預設行為。 所有串流原則都會儲存在下列登錄機碼下:HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\Streaming。 原則的設定方式是輸入 Set-AppvClientConfiguration PowerShell Cmdlet。 下列原則適用於串流:
原則 | 描述 |
---|---|
AllowHighCostLaunch | 允許透過 3G 和行動數據網路進行串流處理 |
AutoLoad | 指定背景載入設定: 0 - 已停用 1 – 僅限先前使用的套件 2 – 所有套件 |
PackageInstallationRoot | 本機計算機中套件存放區的根資料夾 |
PackageSourceRoot | 應該從中串流封裝的根覆寫 |
SharedContentStoreMode | 啟用 VDI 案例的共用內容存放區 |
這些設定會影響將App-V套件資產串流至客戶端的行為。 根據預設,App-V 只會下載下載初始發佈和主要功能區塊之後所需的資產。 串流套件中有三個需要瞭解的特定行為:
- 背景串流
- 優化串流
- Stream 錯誤
背景串流
Windows PowerShell Cmdlet Get-AppvClientConfiguration 可用來判斷使用 AutoLoad 設定的背景串流目前模式,並使用 Set-AppvClientConfiguration Cmdlet 或從登錄 (HKLM\SOFTWARE\Microsoft\AppV\ClientStreaming 機碼) 進行修改。 背景串流是預設設定,其中的 [自動載入] 設定會設定為下載先前使用的套件。 根據預設設定 (值=1 的行為) 在應用程式啟動之後,於背景下載 App-V 數據區塊。 此設定可以完全停用 (value=0) 或針對所有套件啟用, (value=2) ,不論是否已啟動。
優化串流
在排序期間,可以使用主要功能區塊來設定App-V套件。 此設定可讓排序工程師監視特定應用程式或應用程式的啟動檔案,並標示App-V套件中的數據區塊,以便在套件中的任何應用程式第一次啟動時進行串流處理。
Stream 錯誤
在任何發佈數據和主要功能區塊的初始數據流之後,要求更多檔案會執行數據流錯誤。 這些數據區塊會視需要下載到封裝存放區。 此彈性可讓使用者只下載套件的一小部分,通常足以啟動套件並執行一般工作。 當使用者起始需要目前不在封裝存放區中之數據的作業時,會下載所有其他區塊。
套件升級
App-V 套件需要在應用程式的生命週期中進行更新。 App-V 套件升級就像套件發佈作業,因為每個版本都會建立在自己的 PackageRoot 位置:%ProgramData%\App-V{PkgGUID}{newVerGUID}。 升級作業的優化方式是從相同套件的其他版本建立相同和串流檔案的硬式連結。
套件移除
拿掉套件時,App-V 用戶端的行為取決於套件移除方法。 使用App-V完整基礎結構來解除發佈應用程式,系統會移除全域發佈應用程式) (電腦目錄的使用者類別目錄檔案,但套件存放區位置和一律會保留在一起。 使用 Remove-AppVClientPackge Windows PowerShell Cmdlet 移除 App-V 套件時,會清除套件存放區位置。 請記住,從 Management Server 取消發布 App-V 套件並不會執行移除作業。 這兩項作業都不會移除套件存放區套件檔案。
漫遊登錄和數據
App-V 能夠在漫遊時提供近乎原生體驗,視應用程式的撰寫方式而定。 根據預設,App-V 會根據操作系統的漫遊設定,漫遊儲存在漫遊位置的 AppData。 儲存檔案型數據的其他位置不會從計算機漫遊到計算機,因為它們位於未漫遊的位置。
漫遊需求和使用者目錄數據記憶體
App-V 會以下列形式儲存數據,代表使用者目錄的狀態:
- %appdata%\Microsoft\AppV\Client\Catalog 下的檔案
- HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages 下的登錄設定
這些檔案和登錄設定一起代表用戶的目錄,因此兩者都必須漫遊,或兩者都不一定要漫遊給定的使用者。 App-V 不支援漫遊 %AppData%,但不漫遊使用者的配置檔 (登錄) ,反之亦然。
注意
Repair-AppvClientPackage Cmdlet 不會修復使用者在HKEY_CURRENT_USER下的 App-V 狀態遺失或與 %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 的位置是 HKLM\SOFTWARE\Microsoft\AppV\Client\Packages\{PkgGUID}\{UserSID}\REGISTRY\MACHINE\SOFTWARE - HKCU 的位置是 HKCU\SOFTWARE\Microsoft\AppV\Client\Packages\{PkgGUID}\Registry\User\{UserSID}\SOFTWARE |
App-V 和資料夾重新導向
App-V 支援將漫遊 AppData 資料夾的資料夾重新導向 (%AppData%) 。 當虛擬環境啟動時,來自使用者漫遊 AppData 目錄的漫遊 AppData 狀態會複製到本機快取。 相反地,當虛擬環境關閉時,與特定使用者漫遊 AppData 相關聯的本機快取會傳輸到該使用者漫遊 AppData 目錄的實際位置。
一般套件有數個位置對應於使用者的備份存儲中,以取得AppData\Local和AppData\Roaming中的設定。 這些位置是每位使用者儲存在使用者配置檔中的「寫入時複製」位置,用來儲存對套件 VFS 目錄所做的變更,以及保護預設套件 VFS。
下表顯示尚未實作資料夾重新導向時的本機和漫遊位置。
套件中的 VFS 目錄 | 備份存儲區的對應位置 |
---|---|
ProgramFilesX86 | C:\Users\Local\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\ProgramFilesX86 |
SystemX86 | C:\Users\username\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\SystemX86 |
Windows | C:\Users\username\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\Windows |
appv_ROOT | C:\Users\username\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\appv_ROOT |
AppData | C:\Users\username\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\AppData |
下表顯示已針對 %AppData% 實作資料夾重新導向,且位置通常已重新導向 (至網路位置) 時的本機和漫遊位置。
套件中的 VFS 目錄 | 備份存儲區的對應位置 |
---|---|
ProgramFilesX86 | C:\Users\Local\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\ProgramFilesX86 |
SystemX86 | C:\Users\Local\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\SystemX86 |
Windows | C:\Users\Local\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\Windows |
appv_ROOT | C:\Users\Local\AppData\Local\Microsoft\AppV\Client\VFS\<GUID>\appv_ROOT |
AppData | \Fileserver\users\Local\roaming\Microsoft\AppV\Client\VFS\<GUID>\AppData |
目前的 App-V 用戶端 VFS 驅動程式無法寫入網路位置,因此 App-V 用戶端會偵測資料夾重新導向的存在,並在發佈期間和虛擬環境啟動時複製本機磁碟驅動器上的數據。 當使用者關閉App-V應用程式,且App-V用戶端關閉虛擬環境之後,VFS AppData 的本機記憶體會複製回網路,讓漫遊至更多機器,而程式將會重複。 程式期間會發生以下情況:
- 在發佈或虛擬環境啟動期間,App-V 用戶端會偵測 AppData 目錄的位置。
- 如果漫遊 AppData 路徑為本機,或未對應任何 AppData\Roaming 位置,則不會發生任何事。
- 如果漫遊 AppData 路徑不是本機路徑,VFS AppData 目錄會對應至本機 AppData 目錄。
此程式可解決 App-V 用戶端 VFS 驅動程式不支援的非本機 %AppData% 問題。 不過,儲存在此新位置的數據不會隨著資料夾重新導向漫遊。 應用程式執行期間的所有變更都會發生在本機 AppData 位置,而且必須複製到重新導向的位置。 此程式會執行下列動作:
- 關閉 App-V 應用程式,這也會關閉虛擬環境。
- 壓縮漫遊 AppData 位置的本機快取,並將其儲存在 .zip 檔案中。
- 使用 .zip 封裝程序結尾的時間戳來命名檔案。
- 將 HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\Packages\<GUID>\AppDataTime 登錄中的時間戳記錄為最後一個已知的 AppData 時間戳。
- 呼叫資料夾重新導向程式,以評估並起始上傳至漫遊 AppData 目錄的 .zip 檔案。
時間戳可用來判斷發生衝突時的「最後寫入者獲勝」案例,並在App-V應用程式發佈或虛擬環境啟動時用來優化數據下載。 資料夾重新導向可讓支援原則涵蓋的任何其他用戶端提供數據,並起始將AppData\Roaming資料儲存至用戶端上本機AppData位置的程式。 程式期間會發生以下情況:
- 用戶會啟動應用程式,這也會啟動虛擬環境。
- 應用程式的虛擬環境會檢查是否有最新的時間戳 .zip 檔案。
- 如果存在,虛擬環境會檢查登錄中是否有最後一個已知上傳的時間戳。
- 除非本機上次已知上傳時間戳大於或等於 .zip 檔案的時間戳,否則虛擬環境會下載最新的 .zip 檔案。
- 如果本機上次已知上傳時間戳早於漫遊 AppData 位置中最近 .zip 檔案的時間戳,則虛擬環境會將 .zip 檔案擷取至使用者配置檔中的本機暫存目錄。
- 成功擷取 .zip 檔案之後,會重新命名漫遊 AppData 目錄的本機快取,並將新數據移到原處。
- 重新命名的目錄會遭到刪除,且應用程式會以最近儲存的漫遊 AppData 資料開啟。
此程式會完成AppData\Roaming位置中應用程式設定的成功漫遊。 唯一必須解決的其他條件是封裝修復作業。 此程式會執行下列動作:
- 在修復期間,偵測使用者漫遊 AppData 目錄的路徑是否不是本機。
- 對應非本機漫遊 AppData 路徑目標,重新建立預期的漫遊和本機 AppData 位置。
- 如果存在,則刪除儲存在登錄中的時間戳。
此程式會重新建立 AppData 的本機和網路位置,並移除時間戳的登錄記錄。
App-V 用戶端應用程式生命週期管理
在 App-V 完整基礎結構中,應用程式排序之後,會透過 App-V 管理和發佈伺服器來管理和發布給使用者或計算機。 本節詳述在一般 App-V 應用程式生命週期作業期間發生的作業, (新增、發佈、啟動、升級和移除) ,以及從 App-V 用戶端觀點變更和修改的檔案和登錄位置。 App-V 用戶端作業會在執行 App-V 用戶端的電腦上輸入為 PowerShell 命令。
本檔著重於App-V完整基礎結構解決方案。 如需 App-V 與 Microsoft Configuration Manager 整合的特定資訊,請參閱使用 Configuration Manager 部署 App-V 虛擬應用程式。
App-V 應用程式生命週期工作會在使用者登入時觸發 (預設) 、機器啟動或背景定時作業。 App-V 用戶端作業的設定,包括發佈伺服器、重新整理間隔、套件腳本啟用等,會在用戶端使用 Windows PowerShell 命令啟用) 之後 (設定。 請參閱 App-V 用戶端組態設定:Windows PowerShell。
發佈重新整理
發佈重新整理程式包含在App-V用戶端上執行的數個較小作業。 由於App-V是應用程式虛擬化技術,而不是工作排程技術,因此Windows工作排程器會在使用者登入、計算機開啟時,以及依排程的間隔啟用程式。 在上一節所列的安裝期間,用戶端組態是將用戶端散發到具有正確設定的大型計算機群組時的慣用方法。 您可以使用下列 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 套件新增至客戶端是發佈重新整理程式的第一個步驟。 最終結果與 Windows PowerShell 中的 Add-AppVClientPackage Cmdlet 相同,但發布重新整理新增程式會連絡設定的發佈伺服器,並將高階應用程式清單傳遞回用戶端,以提取更詳細的資訊,而不只是執行單一套件新增作業。
然後,此程式會設定用戶端進行套件或連線群組新增或更新,然後存取 appv 檔案。 接下來,appv 檔案的內容會展開並放在適當位置的本機操作系統上。 下列步驟是程式的詳細工作流程,假設已針對錯誤串流設定套件。
如何新增App-V套件
透過發佈重新整理程式的 Windows PowerShell 或工作順序起始,手動起始安裝。
App-V 用戶端會建立 HTTP 連線,並根據目標要求應用程式清單。 發佈重新整理程式支援以機器或用戶為目標。
App-V 發佈伺服器會使用起始目標、用戶或計算機的身分識別,並查詢資料庫中具有許可權的應用程式清單。 應用程式清單會提供為 XML 回應,用戶端會使用此回應將更多要求傳送至伺服器,以取得每個套件的詳細資訊。
App-V 用戶端上的發行代理程式會評估任何未發佈或停用的連線群組,因為無法處理屬於連線群組的套件版本更新。
藉由識別 [新增 ] 或 [ 更新 ] 作業來設定套件。
App-V 用戶端會利用來自 Windows 的 AppX API,並從發佈伺服器存取 appv 檔案。
套件檔案隨即開啟, AppXManifest.xml 和 StreamMap.xml 檔案會下載到套件存放區。
完全串流 StreamMap.xml檔案中 定義的發行區塊數據。 發佈區塊數據會儲存在套件存放區\PkgGUID\VerGUID\Root 中。
- 圖示:擴充點的目標。
- 可攜式可執行檔標頭 (PE 標頭) :包含磁碟上映像需求基本資訊的擴充點目標,直接或透過檔類型存取。
- 腳本:下載文稿目錄以在整個發佈程式中使用。
執行下列子步驟來填入套件存放區:
Create 磁碟上的疏鬆檔案,代表列出之任何目錄的解壓縮套件。
在根目錄下暫存最上層檔案和目錄。
當目錄在磁碟上列為疏鬆並視需要串流處理時,就會建立所有其他檔案。
Create 電腦目錄專案。 Create 封裝檔案中的 Manifest.xml 和 DeploymentConfiguration.xml 檔案, (如果封裝中沒有任何 DeploymentConfiguration.xml 檔案,則) 建立佔位符。
Create 登錄 HKLM\Software\Microsoft\AppV\Client\Packages\PkgGUID\Versions\VerGUID\Catalog 中套件存放區的位置。
從套件存放區將Registry.dat檔案 Create 至 %ProgramData%\Microsoft\AppV\Client\VReg\{VersionGUID}.dat。
在 HKLM\Microsoft\Software\AppV\MAV 向 App-V 內核模式驅動程序註冊套件。
從 AppxManifest.xml 或 DeploymentConfig.xml 檔案叫用腳本以進行套件新增時間。
藉由新增和啟用或停用來設定連線 群組。
拿掉未發佈至目標 (用戶或計算機) 的物件。
注意
這不會執行套件刪除,而是移除特定目標 (使用者或計算機) 的整合點,並針對全域發佈的) 移除計算機類別目錄檔案 (用戶類別目錄檔案。
根據用戶端組態叫用背景載入掛接。
已擁有機器或使用者發佈資訊的套件會立即還原。
注意
此條件是移除的乘積,而不會在套件的背景新增的情況下解除發佈。
此程式會完成發佈重新整理程式的App-V套件新增。 下一個步驟是將套件發佈至計算機或使用者) (特定目標。
套件新增檔案和登錄數據
發佈 App-V 套件
在發佈重新整理作業期間,特定的發佈作業 Publish-AppVClientPackage 會將專案新增至使用者目錄、將權利對應至使用者、識別本地存儲,並完成任何整合步驟。
如何發佈App-V套件
套件專案會新增至用戶目錄
用戶目標套件: UserDeploymentConfiguration.xml 和 UserManifest.xml 檔案會放在使用者類別目錄的計算機上。
以全域) 套件 (為目標的計算機: UserDeploymentConfiguration.xml 會放在計算機目錄中。
在 HKLM\Software\Microsoft\AppV\MAV 向用戶註冊套件的核心模式驅動程式。
執行整合工作。
Create 擴充點。
將備份資訊儲存在使用者的登錄和漫遊配置檔中, (快捷方式備份) 。
注意
如果封裝未發佈,這會啟用還原擴充點。
執行以發佈時間為目標的腳本。
發佈屬於連線群組一部分的App-V套件類似於上述程式。 針對連線群組,儲存特定目錄資訊的路徑包含 PackageGroups 作為目錄目錄的子系。 如需詳細資訊,請檢閱上述各節中的機器和使用者類別目錄資訊。
套件新增檔案和登錄資料 — 全域
應用程式啟動
在發佈重新整理程式之後,用戶會啟動並重新啟動App-V應用程式。 App-V 用戶端會檢查使用者目錄的路徑,以取得在發佈期間建立的檔案。 建立啟動套件的許可權之後,App-V 用戶端會建立虛擬環境、開始串流任何必要的數據,並在虛擬環境建立期間套用適當的指令清單和部署配置檔。 建立並設定特定封裝和應用程式的虛擬環境之後,應用程式就會啟動。 這看起來可能很像,但運作中的程式很快,並已優化以將網路流量降至最低。
如何啟動App-V應用程式
用戶選取快捷方式或檔案類型調用來啟動應用程式。
App-V 用戶端會驗證下列檔案的用戶類別目錄是否存在
- UserDeploymentConfiguration.xml
- UserManifest.xml
如果檔案存在,則應用程式會獲得該特定用戶的許可權,且應用程式將會啟動啟動程式。 目前沒有任何網路流量。
接下來,App-V 用戶端會檢查登錄中是否找到為 App-V 用戶端服務註冊的套件路徑。
尋找封裝存放區的路徑時,會建立虛擬環境。
如果此進程執行是第一次啟動,則主要功能區塊會在出現時下載。
下載之後,App-V 用戶端服務會取用指令清單和部署組態檔來設定虛擬環境,並載入所有 App-V 子系統。
應用程式隨即啟動。 對於套件存放區中的任何遺漏檔案, (疏鬆檔案) ,App-V 會視需要串流處理錯誤檔案。
套件新增檔案和登錄數據— 資料流
升級 App-V 套件
App-V 套件升級程式的目前版本與其記憶體優化中的舊版不同。 App-V 在授權給不同使用者的計算機上支援相同套件的多個版本。 套件版本可以隨時新增,因為套件存放區和目錄會以新的資源更新。 在新版本的升級期間,只會將新檔案新增至新的版本存放區位置,並針對未變更的檔案建立硬式連結。 這類結果只會在一個磁碟位置上呈現檔案,然後將檔案投影到磁碟上具有檔案位置專案的所有資料夾,以減少整體儲存空間。
如何升級App-V套件
App-V 用戶端會執行發佈重新整理,並探索較新版本的 App-V 套件。
套件專案會新增至新版本的適當目錄。
用戶目標套件: UserDeploymentConfiguration.xml 和 UserManifest.xml 檔案會放在 appdata\roaming\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID 使用者目錄的計算機上。
以 (全域) 套件為目標的計算機: UserDeploymentConfiguration.xml 會放在計算機目錄中的 %programdata%\Microsoft\AppV\Client\Catalog\Packages\PkgGUID\VerGUID。
在 HKLM\Software\Microsoft\AppV\MAV 向用戶註冊套件的核心模式驅動程式。
執行整合工作。
從指令清單和動態組態檔案整合擴充點 (EP) 。
檔案型 EP 資料會儲存在 AppData 資料夾中,並利用套件存放區的連接點。
當新版本可供使用時,第 1 版的 IP 已經存在。
對於任何較新或更新的擴充點,擴充點會切換至計算機或用戶目錄中的第 2 版位置。
執行以發佈時間為目標的腳本。
視需要安裝並存元件。
升級使用中的App-V套件
如果您嘗試升級目前使用的套件,升級工作會處於擱置狀態。 升級將在稍後根據下列規則執行:
工作類型 | 適用的規則 |
---|---|
以用戶為基礎的工作,例如將套件發佈給使用者 | 暫止工作會在用戶註銷后再重新登入之後執行。 |
以全域為基礎的工作,例如全域啟用聯機群組 | 當電腦關閉並重新啟動時,將會執行擱置中的工作。 |
當工作處於擱置狀態時,App-V 用戶端也會產生暫止工作的登錄機碼,如下所示:
以用戶為基礎或以全域為基礎的工作 | 產生登錄機碼的位置 |
---|---|
以用戶為基礎的工作 | HKEY_CURRENT_USER\Software\Microsoft\AppV\Client\PendingTasks |
以全域為基礎的工作 | HKEY_LOCAL_MACHINE\Software\Microsoft\AppV\Client\PendingTasks |
必須先完成下列作業,使用者才能使用較新版本的套件:
工作 | 詳細資料 |
---|---|
將套件新增至計算機 | 此工作是計算機特定的工作,您可以完成 如何新增App-V套件中的步驟,隨時執行此工作。 |
發佈套件 | 如需步驟,請參閱上述的套件發佈一節。 此程式需要您更新系統上的擴充點。 當應用程式正在使用時,您無法完成這項工作。 |
使用下列範例案例作為更新套件的指南。
案例 | 需求 |
---|---|
當您嘗試升級時,App-V 套件不在使用中 | 套件的下列任何元件都無法使用:虛擬應用程式、COM 伺服器或殼層擴充功能。 系統管理員會發佈較新版本的套件,而升級會在下次啟動套件內的元件或應用程式時運作。 新版本的套件會進行串流處理並執行。 |
當系統管理員發佈較新版本的套件時,App-V 套件正在使用中 | App-V 用戶端會將作業設定為「擱置中」,這表示作業已排入佇列,稍後在套件未使用時會執行。 如果封裝應用程式正在使用中,用戶會關閉虛擬應用程式,之後就會進行升級。 如果套件具有 Windows 檔案總管永久載入的殼層擴充功能,用戶將無法登入。 用戶必須先註銷再重新登入,才能起始App-V套件升級。 |
全域與用戶發佈
App-V 套件可以用兩種方式之一發佈;身為使用者,可將App-V套件實體化為特定使用者或使用者群組,或全域,這會將App-V套件提供給電腦的所有用戶整個計算機。 在套件升級已加上且 App-V 套件未使用之後,請考慮兩種發行類型:
- 全域發佈是在應用程式發行至計算機時;該電腦上的所有使用者都可以使用它。 升級會在 App-V 用戶端服務啟動時發生,這實際上表示計算機會重新啟動。
- 用戶發佈是在應用程式發佈給使用者時。 如果電腦上有多個使用者,則可以將應用程式發佈至使用者的子集。 當使用者登入或再次 (定期發佈、ConfigMgr 原則重新整理和評估,或 App-V 定期發佈/重新整理,或明確地透過 Windows PowerShell 命令) 時,就會進行升級。
拿掉 App-V 套件
在完整基礎結構中移除App-V應用程式是未發佈的作業,不會執行套件移除。 此程式與上述發佈程式相同,但不新增移除程式會反轉針對App-V套件所做的變更。
修復App-V套件
修復作業很容易執行,但可能會影響計算機上的許多位置。 拿掉先前提及的寫入 (的 COPY) 位置,並取消整合擴充點,然後重新整合。 修復之前,請先檢閱在登錄中登錄了一些在其中註冊的一些數據放置位置。 若要執行修復作業,您只需要從App-V用戶端控制台或 透過 Repair-AppVClientPackage PowerShell Cmdlet 來起始它。 之後,作業就會自動完成。
整合 App-V 套件
App-V 用戶端和套件架構可在新增和發佈套件期間,提供與本機操作系統的特定整合。 三個檔案會定義 App-V 套件的整合或擴充點:
- AppXManifest.xml 儲存在套件內,並具有儲存在套件存放區和使用者配置檔中的後援複本。 包含在排序程序期間建立的選項。
- DeploymentConfig.xml 提供計算機和使用者型整合擴充點的設定資訊。
- UserConfig.xml 是 Deploymentconfig.xml 檔案的子集,只提供以用戶為基礎的組態,且僅以用戶為基礎的擴充點為目標。
整合規則
當 App-V 應用程式發佈至具有 App-V 用戶端的電腦時,會執行一些特定動作,如下列清單所述:
全域發佈:快捷方式會儲存在 [所有使用者] 配置檔位置,而其他擴充點則會儲存在 HKLM 登錄區中的登錄中。
用戶發佈:快捷方式會儲存在目前的用戶帳戶配置檔中,而其他擴充點則會儲存在 HKCU Hive 的登錄中。
備份與還原:現有的原生應用程式數據和登錄 (,例如 FTA 註冊) 會在發佈期間備份。
- App-V 套件會根據最後一個整合套件獲得擁有權,其中的擁有權會傳遞給最新發佈的App-V應用程式。
- 當擁有的 App-V 套件未發佈時,擁有權會從一個 App-V 套件轉移至另一個套件。 此傳輸不會起始數據或登錄的還原。
- 在每個擴充點上取消發佈或移除最後一個套件時,還原備份的數據。
擴充點
App-V 發佈檔案 (指令清單和動態組態) 提供數個擴充點來整合應用程式與本機操作系統。 這些擴充點會執行一般應用程式安裝工作,例如放置快捷方式、建立檔類型關聯,以及註冊元件。 由於這些是虛擬化的應用程式,其安裝方式與傳統應用程式不同,因此有一些差異。 以下是本節所涵蓋的擴充點清單:
- 快捷方式
- 檔類型關聯
- 殼層延伸
- Com
- 軟體用戶端
- 應用程式功能
- URL 通訊協議處理程式
- AppPath
- 虛擬應用程式
快捷方式
快捷方式是與OS整合的其中一個基本元素,也是直接用戶啟動App-V應用程式的介面。 在發佈和解除發佈App-V應用程式期間。
從封裝指令清單和動態組態 XML 檔案中,可以在 區段中找到特定應用程式可執行檔的路徑,如下列範例所示:
<Extension Category="AppV.Shortcut">
<Shortcut>
<File>[{Common Desktop}]\Adobe Reader.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 套件中的令牌化位置。
檔類型關聯
使用者可以使用檔類型調用或開啟擴展名為 的檔案 (.docx) 啟動App-V應用程式,因為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</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 整合的詳細資訊,請參閱 Microsoft Application Virtualization 5.0 Integration。
軟體用戶端和應用程式功能
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: 連結的應用程式中,用戶會選取預期要存取其已註冊郵件客戶端的連結。 App-V 支援可根據每個套件向本機操作系統註冊的 URL 通訊協定處理程式。 在排序期間,URL 通訊協定處理程式會自動新增至封裝。
如果有多個應用程式可以註冊特定的 URL 通訊協定處理程式,則可以使用動態組態檔來修改行為,並針對不應啟動主要應用程式的應用程式隱藏或停用此功能。
AppPath
AppPath 擴充點支援直接從操作系統呼叫App-V應用程式。 系統管理員可以從作業系統命令或腳本提供App-V應用程式的存取權,而不需要根據作業系統,從執行或開始畫面呼叫可執行檔的特定路徑。 因此,它可避免在所有系統上修改系統路徑環境變數,因為它是在發佈期間完成的。
AppPath 擴充點會在指令清單或動態組態檔中設定,並在使用者發佈期間儲存在本機計算機的登錄中。 如需 AppPath 的詳細資訊,請檢閱: App Paths - App-V 5.0 中的虛擬應用程式延伸模組。
虛擬應用程式
此子系統提供在排序期間擷取的應用程式清單,供其他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套件部署到單一電腦或用戶很簡單。 不過,當組織跨商務線和地理與政治界限部署App-V應用程式時,就無法使用相同的設定來排序所有應用程式。 App-V 是設計來克服此問題,方法是在指令清單檔案中排序期間擷取特定的設定和組態,同時支援修改動態組態檔。
App-V 動態設定可讓您在電腦或使用者層級指定套件原則。 排序工程師可以使用動態組態檔案來修改套件排序後的設定,以解決個別使用者或計算機群組的需求。 在某些情況下,可能需要修改應用程式,以在App-V環境中提供適當的功能。 例如,您可能需要修改 _*config.xml 檔案,以允許在執行應用程式時於指定時間執行特定動作,例如停用mailto擴充功能以防止虛擬化應用程式覆寫另一個應用程式的延伸模組。
App-V 套件包含App-V套件檔案內的指令清單檔案,代表排序作業,並且是選擇的原則,除非動態組態檔案指派給特定套件。 排序後,可以修改動態組態檔案,以允許將應用程式發佈至不同的桌面或具有不同擴充點的使用者。 這兩個動態組態檔案是動態部署組態 (DDC) 和動態使用者設定 (DUC) 檔案。 本節著重於指令清單和動態組態檔的組合。
動態組態檔的範例
下列範例顯示在發行之後和正常作業期間,指令清單、部署組態和使用者組態檔案的組合。 這些範例是每個檔案的縮寫範例。 其目的是只顯示檔案的組合,而不是每個檔案中可用之特定類別的完整描述。 如需詳細資訊,請下載 App-V排序指南。
清單
<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 支援在虛擬應用程式發佈期間,於用戶端上排序和部署期間自動封裝並存元件。 App-V 也支援在排序期間,針對不存在於排序計算機上的元件擷取並存元件。 針對由 Visual C++ (第 8 版和較新) 或 MSXML 運行時間所組成的元件,Sequencer 會自動偵測並擷取這些相依性,即使它們未在監視期間安裝也一樣。
並存元件功能會移除舊版 App-V 的限制,其中 App-V Sequencer 不會擷取已存在於排序工作站上的元件,並已停用元件,這會將它限製為每個套件的位版本。 此行為會導致部署至用戶端的App-V應用程式遺失必要的並存元件,導致應用程式啟動失敗。 此失敗會強制記錄封裝程式,並確保套件所需的所有元件都已在使用者的用戶端操作系統上本機安裝。 這項工作是管理和實作挑戰,因為元件數目和必要相依性缺少應用程式檔。
App-V 中的並存元件支援具有下列功能:
- 不論元件是否已安裝在排序工作站上,在排序期間自動擷取並存元件。
- 如果尚未安裝,App-V 用戶端會在發佈時自動將必要的並存元件安裝到用戶端電腦。
- Sequencer 會報告 Sequencer 報告機制中的 VC 運行時間相依性。
- Sequencer 允許選擇不封裝已安裝在 Sequencer 上的元件,支援先前已在目標電腦上安裝元件的案例。
自動發佈並存元件
在發佈具有並存元件的App-V套件期間,App-V用戶端會檢查電腦上的元件是否存在。 如果未偵測到元件,用戶端會將元件部署至計算機。 屬於連線群組一部分的套件將依賴基底套件中的並存元件安裝,因為連線群組不包含任何有關元件安裝的資訊。
注意
解除發佈或移除具有元件的套件並不會移除該套件的元件。
客戶端記錄
App-V 用戶端會以標準 ETW 格式將資訊記錄到 Windows 事件記錄檔。 您可以在事件查看器的 [ 應用程式和服務記錄檔\Microsoft\AppV\Client] 下找到特定的 App-V 事件。
記錄的事件有三種特定類別:
- 管理員 記錄套用至 App-V 用戶端之組態的事件,也包含主要警告和錯誤。
- 作業 會記錄個別元件的一般 App-V 執行和使用方式,並建立 App-V 用戶端已完成 App-V 作業的稽核記錄。
- 虛擬應用程式 會記錄虛擬應用程式啟動和使用虛擬化子系統。