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

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

расходы contoso

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

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

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

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

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

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

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

Открытие манифеста msix

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

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>

Следует манифесту с изменениями:

создание псевдонима

Сохраните и закройте файл манифеста.

Вернитесь к средству упаковки MSIX и создайте новый пакет. После создания пакета установите пакет и запустите приложение с помощью псевдонима, например нажав клавиши Win+R и введя contosoexpenses:

запуск с помощью псевдонима

Теперь, когда псевдоним создан, можно перейти к следующим шагам.

Создание ярлыка приложения

Создайте ярлык приложения в папке с выбранным псевдонимом contosoexpenses.exeследующим образом:

Новое сочетание клавиш для приложения

Назовите ярлык для Contoso Expenses:

Новое приложение завершит создание ярлыка

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

Ярлык универсального приложения

Изменение ярлыка является простым, но здесь необходимо избежать использования полного пути к приложению с номером версии, и это может измениться в будущем обновлении. Один из способов решить эту проблему — скопировать значок из пакета в папку %appdata% , используемую приложением MSIX, т. е. папку %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ , у которых нет номера версии.

Чтобы изменить ярлык приложения, необходимо вручную скопировать значок в ту папку. Это будет автоматизировано позже с помощью скриптов PSF.

Ярлык appdata

Теперь можно изменить значок ярлыка на путь %localappdata%:

новый ярлык пути

По-прежнему в свойствах ярлыка воспользуйтесь преимуществами и измените значения целевого объекта и запустите его в параметре свойств %localappdata%\Microsoft\WindowsApps\contosoexpenses.exee %localappdata %\Microsoft\WindowsApps соответственно:

Сочетание новых значений

Теперь, когда ярлык работает, следующим шагом является добавление его в пакет и автоматизация процесса создания.

новое сочетание клавиш

Получение файлов PSF

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

psf из выпусков GitHub

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

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

Включение файлов PSF в пакет

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

psf из github edit mpt

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

psf из GitHub добавляет psf-файлы

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

psf из добавленных файлов github psf

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

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

Psf из манифеста редактирования github

На этом шаге необходимо изменить точку входа приложения (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 из GitHub

Файл config.json используется для указания того, что скрипт createshortcut.ps1 должен выполняться только один раз в первой инициализации приложения. Так как рабочий каталог имеет значение ContosoExpenses, в папку 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 на рабочем столе пользователя.