Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Исследование
Для некоторых средств запуска приложений 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 , выполнив следующую команду из окна администрирования PowerShell:
Set-Location "C:\PSF" .\nuget\nuget.exe install Microsoft.PackageSupportFrameworkСкачайте и установите набор средств разработки программного обеспечения Windows 10 (пакет SDK для Win 10).
- Скачайте пакет SDK для Win 10.
- Запустите winsdksetup.exe, загруженный на предыдущем шаге.
- Нажмите кнопку Далее.
- Выберите только следующие три компонента для установки:
- Средства подписывания Windows SDK для настольных приложений
- Пакет SDK для Windows для приложений C++ UWP
- Пакет SDK Windwos для локализации приложений UWP
- Нажмите кнопку Установить.
- Нажмите кнопку OK.
Настройка приложения Windows
После промежуточного развертывания приложения Windows мы будем извлекать или распаковывать содержимое приложения Windows в локальный каталог. После распаковки приложения Windows в промежуточное расположение можно внедрить файлы исправления PSF для исправления нежелательного поведения.
Откройте окно администрирования 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, чтобы задать относительный путь к приложению, указанному в поле Applications.Application.Executable файла AppxManifest.xml.
applications.argumentsЗадайте значение в config.json для сопоставления с аргументом, используемым для запуска приложения. Ознакомьтесь с записанным значением из заключительного шага исследования - Определение параметра средства запуска приложений Windows .applications.workingdirectoryЗадайте значение в config.json, чтобы указать относительный путь к папке, найденной в поле Applications.Application.Запускаемый файла AppxManifest.xml.
Сохраните обновленный файлconfig.json .
{ "applications": [ { "id": "PSFSample", "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe", "arguments": "/bootfromsettingshortcut" } ] }Скопируйте следующие четыре файла из Package Support Framework в зависимости от архитектуры исполняемого файла приложения в корневой каталог подготовленного приложения 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и выберите "Открыть с кодом" в раскрывающемся меню (при необходимости можно открыть с помощью другого текстового редактора).
Обновите файл AppxManifest.xml со следующими сведениями:
<Package ...> ... <Applications> <Application Id="PSFSample" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication"> ... </Application> </Applications> </Package>
Переупакуйте приложение.
Все исправления были применены, теперь приложение Windows может быть повторно упаковано в MSIX и подписано с помощью сертификата подписи кода.
Откройте окно администрирования PowerShell.
Задайте следующие переменные:
$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