使用套件支援架構執行腳本來建立應用程式快捷方式
本檔將說明如何使用套件支援架構 (PSF) ,透過 MSIX 封裝工具和Contoso Expense WPF 應用程式執行腳本來建立應用程式快捷方式。
其概念是透過 PSF 腳本,將套件內可用的應用程式快捷方式複製到使用者的 Desktop。
請記住幾個事項:
- 只有在絕對必要時才建立快捷方式。 目標是不要使使用者的桌面變得雜亂。
- 建立快捷方式之前,必須先安裝 MSIX 應用程式,才能在快捷方式建立期間指定 MSIX 應用程式路徑。
- 同時,MSIX 應用程式路徑可以在安裝資料夾中指定版本號碼後變更。 Contoso Expenses安裝路徑的範例:
C:\Program Files\WindowsApps\ContosoExpenses_ 1.0.0.0
_x86__3z09h3y28h0qg
若要避免在每次更新應用程式時變更應用程式快捷方式,請指向 AppExecutionAlias來建立快捷方式。 AppExecutionAlias可讓它以應用程式資訊清單別名會話中定義的值啟動應用程式,因此不需要指定完整的應用程式路徑。 因此,在建立快捷方式之前,請在應用程式資訊清單中定義別名。 否則,Windows Explorer 將無法辨識別名,而且不允許我們建立快捷方式。
建立應用程式別名
按一下 [ 套件資訊 ] 功能表項目,然後按一下 UI 底部的 [ 開啟檔案],以編輯應用程式資訊清單:
包含下列命名空間,將用來建立別名,如下所示:
xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
在IgnorableNamespaces元素中包含uap3和desktop值:
IgnorableNamespaces="uap uap3 desktop rescap build"
在/uap:VisualElements > 元素後面 <加入應用程式的執行別名:
<Extensions>
<uap3:Extension Category="windows.appExecutionAlias"
Executable="ContosoExpenses\ContosoExpenses.exe"
EntryPoint="Windows.FullTrustApplication">
<uap3:AppExecutionAlias>
<desktop:ExecutionAlias Alias="contosoexpenses.exe" />
</uap3:AppExecutionAlias>
</uap3:Extension>
</Extensions>
依照資訊清單進行修改:
儲存 並 關閉 資訊清單檔案。
切換回 MSIX 封裝工具,並 產生新的套件。 建立套件之後, 請安裝套件 ,並透過別名啟動應用程式,例如按 Win+R 並輸入 contosoexpenses:
現在已建立別名,接下來可以繼續進行後續步驟。
建立應用程式快捷方式
使用別名 contosoexpenses.exe,在喜好設定的 資料夾中建立新的應用程式快捷方式,如下所示:
將 Contoso 費用的快捷方式命名為:
根據預設,快捷方式會是一般圖示:
變更快捷方式很簡單,但這裡的挑戰是避免使用具有版本號碼的完整應用程式路徑,而且未來更新可能會變更。 解決此問題的其中一個方法是將圖示從套件複製到 MSIX 應用程式所使用的 %appdata%,也就是沒有版本號碼的 %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ 資料夾。
若要變更應用程式快捷方式,現在需要手動將圖示複製到該資料夾。 稍後會使用 PSF 腳本自動執行此動作。
現在,可以將快捷方式圖示變更為 %localappdata% 路徑:
仍在快捷方式屬性中,請利用並變更目標的值,並在屬性參數%localappdata%\Microsoft\WindowsApps\contosoexpenses.exee %localappdata%\Microsoft\WindowsApps分別開始:
既然快捷方式正常運作,下一個步驟是將它新增至套件,並將建立程式自動化。
取得 PSF 檔案
從PSF Github 存放庫下載PSFBinaries.zip。
根據您的應用程式是否為 32 或 64 位,將所需的 32 位或 64 位檔案解壓縮至套件目錄的根目錄。 使用下表做為指引。
應用程式可執行檔為 x64 | 應用程式可執行檔為 x86 |
---|---|
PSFLauncher64.exe | PSFLauncher32.exe |
PSFRuntime64.dll | PSFRuntime32.dll |
在套件中包含 PSF 檔案
透過MSIX 封裝工具編輯Contoso Expense:
按一下 [ 封裝檔案] 功能表項目,按一下 [套件 ] 資料夾上的右按鈕,然後選取 [ 新增檔案...]:
由於 ContosoExpense 組建是 32 位,因此已新增 PSF 32 位必要檔案。 您的套件內容現在看起來應該像這樣:
更新 PSF 的套件資訊清單
按一下 [ 套件資訊 ] 功能表項目,然後按一下 UI 底部的 [ 開啟檔案],以編輯應用程式資訊清單:
在此步驟中,您必須變更PSFLauncher32.exe的應用程式進入點 (ContosoExpenses\ContosoExpenses.exe) 。
<Application Id="App" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication">
儲存 並 關閉 資訊清單檔案。
建立 config.json 檔案
切換回 MSIX 封裝工具,按一下 [ 套件檔案],選取 [套件] 資料夾,然後新增具有下列內容的 config.json 檔案。
{
"applications": [
{
"id": "App",
"executable": "ContosoExpenses\\ContosoExpenses.exe",
"workingDirectory": "ContosoExpenses\\",
"startScript":
{
"scriptPath": "createshortcut.ps1",
"runInVirtualEnvironment": false,
"waitForScriptToFinish": true,
"showWindow": false,
"runOnce": true
}
}
]
}
👀 觀察應用程式識別碼與資訊清單中的識別碼相同:
config.json檔案必須在套件根目錄中建立,如下所示:
config.json檔案正用來指定createshortcut.ps1腳本應該只在第一個應用程式初始化中執行一次。 當 工作目錄 設定為 ContosoExpenses時, createshortcut.ps1腳本 ( 稍後會建立) ,而且必須新增 PSF 檔案) StartingScriptWrapper.ps1 腳本 (至 ContosoExpenses 資料夾。
建立 PowerShell 腳本
使用下列內容建立createshortcut.ps1腳本:
Copy-Item "Contoso Expenses.lnk" "$env:USERPROFILE\desktop\Contoso Expenses.lnk"
Copy-Item "contoso.ico" $env:APPDATA\contoso.ico
createshortcut.ps1腳本會將先前建立的 「Contoso Expenses.lnk」 快捷方式複製到使用者桌面, 第二個指令會將 contoso.icon 複製到 MSIX APPDATA 資料夾, (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming) 。
下一個步驟是將下列檔案複製到封裝的 ContosoExpenses 資料夾:
- Contoso Expenses.lnk
- Contoso.ico
- StartingScriptWrapper.ps1
- createshortcut.ps1
最後,最後一個步驟是 建立 並 安裝 新版本的應用程式套件。 在第一個應用程式初始化期間,createshortcut.ps1腳本將會執行,而且會在使用者桌面中建立Contoso Expense 快捷方式。