Запуск приложений Windows с параметрами

Исследование

Для некоторых средств запуска приложений Windows в меню "Пуск" требуется передать в исполняемый файл параметры при запуске приложения Windows. Для этого сначала необходимо определить средство запуска, требующее параметра, прежде чем интегрировать приложение Windows с платформой поддержки пакетов.

Определение требования параметра средства запуска приложений Windows

  1. Установите приложение Windows на тестовом компьютере.

  2. Откройте меню "Пуск" Windows.

  3. Найдите и выберите средство запуска приложений Windows в меню "Пуск".

  4. Если приложение запускается, у вас нет никаких проблем (протестируйте все связанные средства запуска приложений Windows в меню "Пуск").

  5. Удалите приложение Windows с тестового компьютера.

  6. С помощью установочного носителя Win32 установите приложение на тестовый компьютер.

  7. Откройте меню "Пуск" Windows.

  8. Найдите и щелкните правой кнопкой мыши приложение Windows в меню "Пуск".

  9. В раскрывающемся меню выберите дополнительное>>расположение открытого файла.

  10. Щелкните правой кнопкой мыши первый связанный ярлык приложения (повторите следующие три шага для всех связанных ярлыков приложений).

  11. Выберите "Свойства " в раскрывающемся меню.

  12. Просмотрите значение в текстовом поле справа от Target. После пути к файлу приложения, если указан параметр, это приложение Example of the File Property Window with Parameter in Target

  13. Запишите значение параметра для будущего использования.

Разрешение

Приложения Windows перенаправляют определенные каталоги, связанные с приложением в папку C:\Program Files\WindowsApps . Если приложение пытается записать в контейнер приложений Windows, ошибка будет активирована, а запись завершится ошибкой.

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

  1. Этап приложения Windows в локальный каталог
  2. Создание файла Config.json и внедрение необходимых файлов PSF
  3. Обновление файла AppxManifest приложения Windows
  4. Перепаковка и регистрация приложения Для Windows

Приведенные выше инструкции по извлечению содержимого приложения Windows в локальный каталог этапов, внедрение файлов исправлений PSF в каталог поэтапного приложения Windows, настройка средства запуска приложений для указания средства запуска PSF, а затем настройка файла PSF config.json для перенаправления средства запуска PSF в приложение, указывающее рабочий каталог.

Скачивание и установка необходимых средств

Этот процесс поможет вам получить и использовать следующие средства:

  • Клиентское средство NuGet
  • Платформа поддержки пакетов
  • Пакет SDK для Windows 10 (последняя версия)
  • Монитор процессов SysInternals

Ниже приведены пошаговые инструкции по загрузке и установке необходимых средств.

  1. Скачайте последнюю версию клиентского средства NuGet и сохраните nuget.exe в папке C:\PSF\nuget .

  2. Скачайте платформу поддержки пакетов с помощью Nuget, выполнив следующую команду из окна Администратор istrative PowerShell:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Скачайте и установите набор средств разработки программного обеспечения Windows 10 (пакет SDK для Win 10).

    1. Скачайте пакет SDK для Win 10.
    2. Запустите winsdksetup.exe, скачанный на предыдущем шаге.
    3. Нажмите кнопку Далее.
    4. Выберите только следующие три компонента для установки:
      • Средства подписывания Windows SDK для классических приложений;
      • Windows SDK для приложений UWP C++;
      • Пакет SDK Windwos для локализации приложений UWP
    5. Нажмите кнопку Установить.
    6. Нажмите кнопку OK.

Этап приложения Windows

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

  1. Откройте окно Администратор istrative PowerShell.

  2. Задайте следующие переменные, предназначенные для конкретного файла приложения, и версию пакета SDK для Windows 10:

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp.msix"         ## Path to the MSIX App Installer
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gcim Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. Распакуите приложение Windows в промежуточную папку, выполнив следующий командлет PowerShell:

    ## Sets the directory to the Windows 10 SDK
    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    
    ## Unpackages the Windows app to the staging folder
    .\makeappx.exe unpack /p "$AppPath" /d "$StagingFolder"
    

Создание и внедрение необходимых файлов PSF

Чтобы применить корректирующие действия к приложению Windows, необходимо создать файл config.json и предоставить сведения о средство запуска приложений Windows, которое завершается сбоем. Если возникают проблемы с несколькими средствами запуска приложений Windows, файл config.json можно обновить с несколькими записями.

После обновления файла config.json файл config.json и вспомогательные файлы исправления PSF должны быть перемещены в корень пакета приложения Windows.

  1. Откройте Visual Studio Code (VS Code) или любой другой текстовый редактор.

  2. Создайте файл, выбрав меню "Файл " в верхней части VS Code, выбрав новый файл в раскрывающемся меню.

  3. Сохраните файл как config.json, выбрав меню "Файл " в верхней части окна VS Code, выбрав "Сохранить " в раскрывающемся меню. В окне "Сохранить как" перейдите в промежуточный каталог приложения Windows (C:\PSF\Staging\PSFSampleApp) и задайте имя файла как config.json. Выберите кнопку Сохранить.

  4. Скопируйте следующий код в созданный файл config.json .

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Откройте промежуточный файл приложения Windows AppxManifest , расположенный в промежуточной папке приложения Windows (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) с помощью VS Code или другого текстового редактора.

    <Applications>
        <Application Id="PSFSAMPLE" Executable="VFS\ProgramFilesX64\PS Sample App\PSFSample.exe" EntryPoint="Windows.FullTrustApplication">
        <uap:VisualElements BackgroundColor="transparent" DisplayName="PSFSample" Square150x150Logo="Assets\StoreLogo.png" Square44x44Logo="Assets\StoreLogo.png" Description="PSFSample">
            <uap:DefaultTile Wide310x150Logo="Assets\StoreLogo.png" Square310x310Logo="Assets\StoreLogo.png" Square71x71Logo="Assets\StoreLogo.png" />
        </uap:VisualElements>
        </Application>
    </Applications>
    
  6. applications.id Задайте значение в файле config.json таким же значением, как и в поле Applications.Application.ID файла AppxManifest.xml. Image circling the location of the ID within the AppxManifest file.

  7. applications.executable Задайте значение в файле config.json, чтобы задать относительный путь к приложению, расположенному в поле Application.Application.Исполняемый файл AppxManifest.xml. Image circling the location of the executable within the AppxManifest file.

  8. applications.arguments Задайте значение в файле config.json для сопоставления с аргументом, используемым для запуска приложения. Ознакомьтесь с записанным значением из заключительного шага исследования. Определение параметра средства запуска приложений Windows.

  9. applications.workingdirectory Задайте значение в файле config.json, чтобы нацелиться на относительный путь к папке, найденной в поле Application.Application.Исполняемый файл AppxManifest.xml. Image circling the location of the working directory within the AppxManifest file.

  10. Сохраните обновленный файл config.json .

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. Скопируйте следующие четыре файла из платформы поддержки пакетов на основе исполняемой архитектуры приложения в корневой каталог поэтапного приложения Windows. Следующие файлы находятся в папке .\Microsoft.PackageSupportFramework.<Версия>\bin.

    Приложение (x64) Приложение (x86)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Обновление AppxManifest

После создания и обновления файла config.json необходимо обновить appxManifest.xml приложения Windows для каждого средства запуска приложений Windows, который был включен в файл config.json. Приложения AppxManifest теперь должны нацеливать PSFLauncher.exe, связанный с архитектурой приложений.

  1. Откройте проводник и перейдите в папку приложения MSIX staged (C:\PSF\Staging\PSFSampleApp).

  2. Щелкните правой кнопкой мыши AppxManifest.xml и выберите "Открыть с кодом " в раскрывающемся меню (при необходимости можно открыть с помощью другого текстового редактора).

  3. Обновите xml-файл AppxManifest.xml со следующими сведениями:

    <Package ...>
    ...
    <Applications>
        <Application Id="PSFSample"
                    Executable="PSFLauncher32.exe"
                    EntryPoint="Windows.FullTrustApplication">
        ...
        </Application>
    </Applications>
    </Package>
    

Повторно упаковав приложение

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

  1. Откройте окно PowerShell Администратор istrative.

  2. Задайте следующие переменные:

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp_Updated.msix" ## Path to the MSIX App Installer
    $CodeSigningCert  = "C:\PSF\Cert\CodeSigningCertificate.pfx"     ## Path to your code signing certificate
    $CodeSigningPass  = "<Password>"                                 ## Password used by the code signing certificate
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gcim Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. Перепакуите приложение Windows из промежуточной папки, выполнив следующий командлет PowerShell:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Подпишите приложение Windows, выполнив следующий командлет PowerShell:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath