Создание ярлыка приложения с помощью скрипта с помощью платформы поддержки пакетов

В этом документе показано, как создать ярлыки приложений с помощью платформы поддержки пакетов (PSF), выполняющих скрипты с помощью средства упаковки MSIX и приложения Contoso Expense WPF.

contoso expenses

Идея состоит в том, чтобы скопировать ярлык приложения, который будет доступен внутри пакета, на рабочий стол пользователя через скрипты PSF.

Есть несколько вещей, которые следует учитывать:

  1. Только создайте ярлык, если они абсолютно необходимы. Цель заключается в том, чтобы не загромождать рабочий стол пользователя.
  2. Приложение MSIX необходимо установить перед созданием ярлыка, чтобы можно было указать путь приложения MSIX во время создания ярлыка.
  3. В то же время путь приложения MSIX может измениться после того, как он имеет номер версии, указанный в папке установки. Пример пути установки Contoso Expenses:

C:\Program Files\WindowsApps\ContosoExpenses_1.0.0.0_x86__3z09h3y28h0qg

Чтобы избежать необходимости изменять ярлык приложения при каждом обновлении приложения, создайте ярлык, указывая на AppExecutionAlias. AppExecutionAlias позволяет запускать приложение со значением, определенным в сеансе псевдонима манифеста приложения, поэтому нет необходимости указывать полный путь к приложению. Поэтому перед созданием ярлыка определите псевдоним в манифесте приложения. В противном случае windows Обозреватель не распознает псевдоним, и он не позволит нам создать ярлык.

Создание псевдонима приложения

Щелкните элемент меню "Сведения о пакете" и щелкните "Открыть файл" в нижней части пользовательского интерфейса, чтобы изменить манифест приложения:

open msix manifest

Включите следующие пространства имен, которые будут использоваться для создания псевдонима следующим образом:

xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" 

Включите значение uap3 и desktop в элемент IgnorableNamespaces :

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 Expenses:

new app finish creating shortcut

По умолчанию ярлык будет универсальным значком:

generic app shortcut

Изменение ярлыка является простым, но задача заключается в том, чтобы избежать использования полного пути приложения с номером версии и что может измениться в будущем обновлении. Одним из способов решения этой проблемы является копирование значка из пакета в папку %appdata% , используемую приложением MSIX, т. е. папку %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

Скачайте PSFBinaries.zip из репозитория PSF Github.

psf from github releases

Извлеките необходимые 32-разрядные или 64-разрядные файлы в корневой каталог пакета в зависимости от того, является ли приложение 32 или 64-разрядным. Используйте следующую таблицу для справки.

Исполняемый файл приложения — x64 Исполняемый файл приложения — x86
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

Включение ФАЙЛОВ PSF в пакет

Измените расходы Contoso с помощью средства упаковки MSIX:

psf from github edit mpt

Щелкните пункт меню "Файлы пакетов", нажмите правой кнопкой в папке "Пакет" и выберите "Добавить файл...".

psf from github add psf files

Так как сборка ContosoExpense здесь 32-разрядная, она была добавлена 32-разрядные файлы PSF. Содержимое пакета должно выглядеть примерно так:

psf from github psf added files

Обновление манифеста пакета для PSF

Щелкните элемент меню "Сведения о пакете" и щелкните "Открыть файл" в нижней части пользовательского интерфейса, чтобы изменить манифест приложения:

psf from github edit manifest

На этом шаге необходимо изменить точку входа приложения (ContosoExpenses\ContosoExpenses.exe) с помощью 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
      }
    }
  ]
}

👀 Обратите внимание, что идентификатор приложения совпадает с манифестом:

Файл config.json должен быть создан в корневом каталоге пакета следующим образом:

psf from github

Файл config.json используется для указания того, что скрипт createshortcut.ps1 должен выполняться только один раз в первой инициализации приложения. Так как рабочий каталог имеет значение ContosoExpenses, в папку ContosoExpenses необходимо добавить скрипт createdhortcut.ps1 (который будет создан позже) и скрипт StartingScriptWrapper.ps1 (из файлов PSF).

Создание скрипта PowerShell

Создайте скрипт createhortcut.ps1 со следующим содержимым:

Copy-Item "Contoso Expenses.lnk" "$env:USERPROFILE\desktop\Contoso Expenses.lnk"

Copy-Item "contoso.ico" $env:APPDATA\contoso.ico

Скрипт createdhortcut.ps1 копирует ярлык Contoso Expenses.lnk , созданный ранее и который будет доступен внутри пакета, на рабочий стол пользователя. Вторая инструкция копирует contoso.icon в папку MSIX APPDATA (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming).

Следующим шагом является копирование следующих файлов в папку ContosoExpenses пакета:

  • Contoso Expenses.lnk
  • Contoso.ico
  • StartingScriptWrapper.ps1
  • createshortcut.ps1

Наконец, последним шагом является создание и установка новой версии пакета приложения. Во время инициализации первого приложения скрипт createhortcut.ps1 будет выполняться, и он создаст ярлык Contoso Expense в пользовательском рабочем столе.