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

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

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

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

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

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

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

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

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

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

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

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

  9. Выберите moreOpen File Location (Расположение файла MoreOpen>>) в раскрывающемся меню.

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

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

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

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

Решение

Windows Приложения перенаправляют определенные каталоги, связанные с приложением, в папку контейнера приложений Windows. Если приложение пытается выполнить запись в контейнер приложения 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 , выполнив следующую команду в окне администрирования 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. Откройте окно администрирования PowerShell.

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

    $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, чтобы указать относительный путь к приложению, расположенному в поле Applications.Application.Executable файлаAppxManifest.xml. Image circling the location of the executable within the AppxManifest file.

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

  9. applications.workingdirectory Задайте значение в файле config.json, чтобы указать относительный путь к папке, найденный в поле Applications.Application.Executable файла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 App. Следующие файлы находятся в папке .\Microsoft.PackageSupportFramework.< Version>\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 (C:\PSF\Staging\PSFSampleApp).

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

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

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

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

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

  1. Откройте окно PowerShell для администрирования.

  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