本文档介绍如何使用包支持框架(PSF)创建应用程序快捷方式,该框架通过 MSIX 打包工具和Contoso Expense WPF 应用程序运行脚本。
其思路是通过 PSF 脚本将包中可用的应用程序快捷方式复制到用户的桌面。
请记住以下几点:
- 仅当绝对必要时才创建快捷方式。 目标是不使用户的桌面混乱。
- 必须在创建快捷方式之前安装 MSIX 应用程序,以便在创建快捷方式期间指定 MSIX 应用程序路径。
- 同时,MSIX 应用程序路径可以在安装文件夹中指定版本号后更改。 Contoso Expenses 安装路径的示例:
C:\Program Files\WindowsApps\ContosoExpenses_1.0.0.0
_x86__3z09h3y28h0qg
为了避免每次更新应用程序时更改应用程序快捷方式,请通过指向 AppExecutionAlias 创建快捷方式。 AppExecutionAlias 允许它使用应用程序清单的别名会话中定义的值启动应用程序,因此无需指定完整的应用程序路径。 因此,在创建快捷方式之前,请在应用程序清单中定义别名。 否则,Windows 资源管理器将无法识别别名,并且不允许我们创建快捷方式。
创建应用程序别名
单击“ 包信息 ”菜单项,然后单击 UI 底部提供的 “打开文件”以编辑应用程序清单:
包括用于创建别名的以下命名空间,如下所示:
xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
在 IgnorableNamespaces 元素中包含值 uap3 和桌面:
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 Expenses 命名快捷方式:
默认情况下,快捷方式将是一个通用图标:
更改快捷方式非常简单,但此处的挑战是避免使用具有版本号的完整应用程序路径,并且可能会在将来的更新中更改。 解决此问题的一种方法是将图标从包复制到 MSIX 应用程序使用的 %appdata%,即没有版本号的 %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ 文件夹。
若要更改应用程序快捷方式,现在需要手动将图标复制到该文件夹。 稍后将使用 PSF 脚本自动执行此作。
现在,可以将快捷图标更改为 %localappdata% 路径:
仍在快捷方式属性中,利用此界面更改“目标”和“起始位置”属性参数对应的值:%localappdata%\Microsoft\WindowsApps\contosoexpenses.exe 和 %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 底部提供的 “打开文件”以编辑应用程序清单:
在此步骤中,必须更改应用程序入口点(ContosoExpenses\ContosoExpenses.exe) by the PSFLauncher32.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
}
}
]
}
👀 请注意,应用程序 ID 与清单中相同:
必须在包根目录中创建 config.json 文件,如下所示:
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 快捷方式。