使用套件支援架構執行腳本來建立應用程式快捷方式

本檔將說明如何使用套件支援架構 (PSF) 建立應用程式快捷方式,以透過 MSIX 封裝工具和 Contoso Expense WPF 應用程式執行腳本。

contoso expenses

其概念是透過 PSF 腳本,將套件內可用的應用程式快捷方式複製到使用者的 Desktop。

有幾件事要記住:

  1. 只有在絕對必要時才建立快捷方式。 目標是不雜亂使用者桌面。
  2. 必須先安裝 MSIX 應用程式,才能建立快捷方式,以便我們可以在快捷方式建立期間指定 MSIX 應用程式路徑。
  3. 同時,MSIX 應用程式路徑可以在安裝資料夾中指定版本號碼之後變更。 Contoso 費用 安裝路徑的 範例:

C:\Program Files\WindowsApps\ContosoExpenses_ 1.0.0.0 _x86__3z09h3y28h0qg

若要避免在每次更新應用程式時變更應用程式快捷方式,請指向 AppExecutionAlias 來建立快捷方式。 AppExecutionAlias 可讓應用程式啟動應用程式,其值定義于應用程式資訊清單的別名會話中,因此不需要指定完整的應用程式路徑。 因此,在建立快捷方式之前,請在應用程式資訊清單中定義別名。 否則,Windows 檔案總管將無法辨識別名,而且不允許我們建立快捷方式。

建立應用程式別名

按一下 [ 套件資訊] 功能表項目,然後按一下 UI 底部可用的 [開啟檔案 ],以編輯應用程式資訊清單:

open msix manifest

包含下列命名空間,將用來建立別名,如下所示:

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>

遵循資訊清單並修改:

create alias

儲存 關閉 資訊清單檔案。

切換回 MSIX 封裝工具,並 產生新的套件 。 建立套件之後, 請安裝套件 並透過別名啟動應用程式,例如,按 Win+R 並輸入 contosoexpenses

launch using alias

現在已建立別名,接下來可以繼續進行後續步驟。

建立應用程式快捷方式

使用別名 contosoexpenses.exe ,在喜好設定的資料夾中建立新的應用程式快捷方式,如下所示:

new app shortcut

將 Contoso 費用的快捷方式命名為:

new app finish creating shortcut

根據預設,快捷方式會是一般圖示:

generic app shortcut

變更快捷方式很簡單,但這裡的挑戰是避免使用具有版本號碼且未來更新可能會變更的完整應用程式路徑。 解決此問題的其中一個方法是將圖示從套件複製到 MSIX 應用程式所使用的 %appdata%,也就是 沒有版本號碼的 %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ 資料夾。

若要變更應用程式快捷方式,現在需要手動將圖示複製到該資料夾。 稍後會使用 PSF 腳本來自動化。

appdata shortcut

現在,可以將快捷方式圖示變更為 %localappdata% 路徑:

new path shortcut

仍在快捷方式屬性中,請利用並變更目標的值 ,並從 屬性參數 %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe e %localappdata%\Microsoft\WindowsApps 分別開始

new values shortcut

現在快捷方式運作正常,下一個步驟是將它新增至套件,並將建立程式自動化。

new shortcut

取得 PSF 檔案

PSF Github 存放庫 下載 PSFBinaries.zip

psf from github releases

根據您的應用程式是否為 32 位或 64 位,將所需的 32 位或 64 位檔案解壓縮到套件目錄的根目錄。 使用下列資料表作為指南。

應用程式可執行檔為 x64 應用程式可執行檔為 x86
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

在套件中包含 PSF 檔案

透過 MSIX 封裝工具 編輯 Contoso Expense

psf from github edit mpt

按一下 [ 套件檔案 ] 功能表項目,按一下 [套件 ] 資料夾的 右按鈕,然後選取 [ 新增檔案... ] :

psf from github add psf files

由於這裡的 ContosoExpense 組建是 32 位,因此已新增 PSF 32 位所需的檔案。 您的套件內容現在看起來應該像這樣:

psf from github psf added files

更新 PSF 的套件資訊清單

按一下 [ 套件資訊] 功能表項目,然後按一下 UI 底部可用的 [開啟檔案 ],以編輯應用程式資訊清單:

psf from github edit manifest

在此步驟中,必須變更 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 檔案,如下所示:

psf from github

config.json 檔案正用來指定 createshortcut.ps1 腳本應該只在第一個應用程式初始化中執行一次。 當工作目錄 設定為 ContosoExpenses 時, createshortcut.ps1 腳本(稍後將會建立)和 StartingScriptWrapper.ps1 腳本(來自 PSF 檔案)必須新增至 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 快捷方式