Запуск приложений Windows с параметрами
Исследование
Для некоторых средств запуска приложений Windows в меню "Пуск" требуется передать в исполняемый файл параметры при запуске приложения Windows. Для этого сначала необходимо определить средство запуска, требующее параметра, прежде чем интегрировать приложение Windows с платформой поддержки пакетов.
Определение требования параметра средства запуска приложений Windows
Установите приложение Windows на тестовом компьютере.
Откройте меню "Пуск" Windows.
Найдите и выберите средство запуска приложений Windows в меню "Пуск".
Если приложение запускается, у вас нет никаких проблем (протестируйте все связанные средства запуска приложений Windows в меню "Пуск").
Удалите приложение Windows с тестового компьютера.
С помощью установочного носителя Win32 установите приложение на тестовый компьютер.
Откройте меню "Пуск" Windows.
Найдите и щелкните правой кнопкой мыши приложение Windows в меню "Пуск".
В раскрывающемся меню выберите дополнительное>>расположение открытого файла.
Щелкните правой кнопкой мыши первый связанный ярлык приложения (повторите следующие три шага для всех связанных ярлыков приложений).
Выберите "Свойства " в раскрывающемся меню.
Просмотрите значение в текстовом поле справа от Target. После пути к файлу приложения, если указан параметр, это приложение
Запишите значение параметра для будущего использования.
Разрешение
Приложения Windows перенаправляют определенные каталоги, связанные с приложением в папку C:\Program Files\WindowsApps
. Если приложение пытается записать в контейнер приложений Windows, ошибка будет активирована, а запись завершится ошибкой.
Чтобы устранить проблему, связанную с приложением Windows, не удалось записать в контейнер приложений Windows, необходимо выполнить следующие четыре действия.
- Этап приложения Windows в локальный каталог
- Создание файла Config.json и внедрение необходимых файлов PSF
- Обновление файла AppxManifest приложения Windows
- Перепаковка и регистрация приложения Для Windows
Приведенные выше инструкции по извлечению содержимого приложения Windows в локальный каталог этапов, внедрение файлов исправлений PSF в каталог поэтапного приложения Windows, настройка средства запуска приложений для указания средства запуска PSF, а затем настройка файла PSF config.json для перенаправления средства запуска PSF в приложение, указывающее рабочий каталог.
Скачивание и установка необходимых средств
Этот процесс поможет вам получить и использовать следующие средства:
- Клиентское средство NuGet
- Платформа поддержки пакетов
- Пакет SDK для Windows 10 (последняя версия)
- Монитор процессов SysInternals
Ниже приведены пошаговые инструкции по загрузке и установке необходимых средств.
Скачайте последнюю версию клиентского средства NuGet и сохраните nuget.exe в папке
C:\PSF\nuget
.Скачайте платформу поддержки пакетов с помощью Nuget, выполнив следующую команду из окна Администратор istrative PowerShell:
Set-Location "C:\PSF" .\nuget\nuget.exe install Microsoft.PackageSupportFramework
Скачайте и установите набор средств разработки программного обеспечения Windows 10 (пакет SDK для Win 10).
- Скачайте пакет SDK для Win 10.
- Запустите winsdksetup.exe, скачанный на предыдущем шаге.
- Нажмите кнопку Далее.
- Выберите только следующие три компонента для установки:
- Средства подписывания Windows SDK для классических приложений;
- Windows SDK для приложений UWP C++;
- Пакет SDK Windwos для локализации приложений UWP
- Нажмите кнопку Установить.
- Нажмите кнопку OK.
Этап приложения Windows
После промежуточного развертывания приложения Windows мы будем извлекать или распаковывать содержимое приложения Windows в локальный каталог. После распаковки приложения Windows в промежуточное расположение файлы исправления PSF можно внедрить, исправляя любые нежелательные возможности.
Откройте окно Администратор istrative PowerShell.
Задайте следующие переменные, предназначенные для конкретного файла приложения, и версию пакета 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
Распакуите приложение 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.
Откройте Visual Studio Code (VS Code) или любой другой текстовый редактор.
Создайте файл, выбрав меню "Файл " в верхней части VS Code, выбрав новый файл в раскрывающемся меню.
Сохраните файл как config.json, выбрав меню "Файл " в верхней части окна VS Code, выбрав "Сохранить " в раскрывающемся меню. В окне "Сохранить как" перейдите в промежуточный каталог приложения Windows (C:\PSF\Staging\PSFSampleApp) и задайте имя файла как
config.json
. Выберите кнопку Сохранить.Скопируйте следующий код в созданный файл config.json .
{ "applications": [ { "id": "", "executable": "", "arguments": "" } ] }
Откройте промежуточный файл приложения 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>
applications.id
Задайте значение в файле config.json таким же значением, как и в поле Applications.Application.ID файла AppxManifest.xml.applications.executable
Задайте значение в файле config.json, чтобы задать относительный путь к приложению, расположенному в поле Application.Application.Исполняемый файл AppxManifest.xml.applications.arguments
Задайте значение в файле config.json для сопоставления с аргументом, используемым для запуска приложения. Ознакомьтесь с записанным значением из заключительного шага исследования. Определение параметра средства запуска приложений Windows.applications.workingdirectory
Задайте значение в файле config.json, чтобы нацелиться на относительный путь к папке, найденной в поле Application.Application.Исполняемый файл AppxManifest.xml.Сохраните обновленный файл config.json .
{ "applications": [ { "id": "PSFSample", "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe", "arguments": "/bootfromsettingshortcut" } ] }
Скопируйте следующие четыре файла из платформы поддержки пакетов на основе исполняемой архитектуры приложения в корневой каталог поэтапного приложения 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, связанный с архитектурой приложений.
Откройте проводник и перейдите в папку приложения MSIX staged (C:\PSF\Staging\PSFSampleApp).
Щелкните правой кнопкой мыши AppxManifest.xml и выберите "Открыть с кодом " в раскрывающемся меню (при необходимости можно открыть с помощью другого текстового редактора).
Обновите xml-файл AppxManifest.xml со следующими сведениями:
<Package ...> ... <Applications> <Application Id="PSFSample" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication"> ... </Application> </Applications> </Package>
Повторно упаковав приложение
Все исправления были применены, теперь приложение Windows может быть повторно упаковано в MSIX и подписано с помощью сертификата подписи кода.
Откройте окно PowerShell Администратор istrative.
Задайте следующие переменные:
$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
Перепакуите приложение Windows из промежуточной папки, выполнив следующий командлет PowerShell:
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
Подпишите приложение Windows, выполнив следующий командлет PowerShell:
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath