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

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

contoso expenses

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

請記住幾個事項:

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

C:\Program Files\WindowsApps\ContosoExpenses_ 1.0.0.0 _x86__3z09h3y28h0qg

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

建立應用程式別名

按一下 [ 套件資訊 ] 功能表項目,然後按一下 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元素中包含uap3desktop值:

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.exee %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腳本 ( 稍後會建立) ,而且必須新增 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 快捷方式