Платформа поддержки пакетов текущего рабочего каталогаCurrent working directory PSF

Платформа поддержки пакетов использует config.jsв файле для настройки поведения приложения.The Package Support Framework uses a config.json file to configure the behavior of an application.

ПроцедурыProceedure

Чтобы настроить выполнение приложения для получения значений параметров, переданных в него во время запуска приложения, необходимо выполнить следующие действия.To configure the application execution to receive parameter values passed into it during application launch, the following steps must be completed.

  1. Загрузка платформы поддержки пакетовDownload the Package Support Framework
  2. Настройка платформы поддержки пакетов (config.jsна)Configure the Package Support Framework (config.json)
  3. Вставка файлов платформы поддержки пакетов в пакет приложенияInject the Package Support Framework files to the Application package
  4. Обновление манифеста приложенияUpdate the application's manifest
  5. Повторно упаковать приложениеRe-package the application

Загрузка платформы поддержки пакетовDownload the Package Support Framework

Платформу поддержки пакетов можно получить с помощью автономного средства командной строки NuGet или с помощью Visual Studio.The Package Support Framework can be retrieved by using the standalone Nuget commandline tool or via Visual Studio.

Средство командлине NuGet:Nuget comandline tool:

Установите средство командной строки NuGet с веб-сайта NuGet: https://www.nuget.org/downloads .Install the Nuget commandline tool from the nuget website: https://www.nuget.org/downloads. После установки запустите следующую командную строку в окне администрирования PowerShell.After installing, run the following commandline in an administrative PowerShell window.

nuget install Microsoft.PackageSupportFramework

Visual Studio.Visual Studio:

В Visual Studio щелкните правой кнопкой мыши узел решения или проекта и выберите одну из команд Управление пакетами NuGet.In Visual Studio, right-click on your solution/project node and pick one of the Manage Nuget Packages commands. Найдите Microsoft. паккажесуппортфрамеворк или ПСФ , чтобы найти пакет на NuGet.org. Затем установите его.Search for Microsoft.PackageSupportFramework or PSF to find the package on nuget.org. Then, install it.

Создание config.jsдля файлаCreate the config.json file

Чтобы указать аргументы, необходимые для запуска приложения, необходимо изменить config.jsв файле, указав исполняемый файл приложения, и параметры.To specify the arguements required to launch the applicaiton, you must modify the config.json file specifying the application executable, and parameters. Перед настройкой config.jsв файле ознакомьтесь со следующей таблицей, чтобы получить представление о JSON струкутуре.Prior to configuring the config.json file, review the following table to understand the JSON strucuture.

Схема JSONJson Schema

ArrayArray ключkey ЗначениеValue
веб-масштабированием;applications идентификаторid Используйте значение атрибута ID элемента Application в манифесте пакета.Use the value of the ID attribute of the Application element in the package manifest.
веб-масштабированием;applications исполняемый файлexecutable Относительный путь пакета к исполняемому файлу, который необходимо запустить.The package-relative path to the executable that you want to start. Это значение атрибута Executable элемента Application.It's the value of the Executable attribute of the Application element.
веб-масштабированием;applications аргументыarguments Используемых Аргументы параметра командной строки для исполняемого файла.(Optional) Command line parameter arguments for the executable.
веб-масштабированием;applications workingDirectoryworkingDirectory Используемых Путь относительно пакета, используемый в качестве рабочего каталога запускаемого приложения.(Optional) A package-relative path to use as the working directory of the application that starts. Если это значение не задано, операционная система использует каталог System32 в качестве рабочего каталога приложения.If you don't set this value, the operating system uses the System32 directory as the application's working directory. Если указать значение в виде пустой строки, будет использоваться каталог исполняемого файла, на который указывает ссылка.If you supply a value in the form of an empty string, it will use the directory of the referenced executable.
веб-масштабированием;applications monitormonitor Используемых При наличии монитор определяет дополнительную программу, которая должна быть запущена перед запуском основного приложения.(Optional) If present, the monitor identifies a secondary program that is to be launched prior to starting the primary application.
процессыprocesses исполняемый файлexecutable В большинстве случаев это будет имя исполняемого файла, настроенного выше, с удаленным путем и расширением файла.In most cases, this will be the name of the executable configured above with the path and file extension removed.
исправленийfixups Файл DLL.dll Используемых Относительный путь пакета к адресной привязке,. msix/. appx для загрузки.(Optional) Package-relative path to the fixup, .msix/.appx to load.
исправленийfixups configconfig Используемых Определяет, как ведет себя адресная привязка DL.(Optional) Controls how the fixup dl behaves. Точный формат этого значения зависит от способа исправления, так как каждая адресная привязка может интерпретировать этот «большой двоичный объект».The exact format of this value varies on a fixup-by-fixup basis as each fixup can interpret this "blob" as it wants.

Ключи приложений, процессов и исправлений являются массивами.The applications, processes, and fixups keys are arrays. Это означает, что вы можете использовать config.jsв файле, чтобы указать более одного DLL приложения, процесса и адресной привязки.That means that you can use the config.json file to specify more than one application, process, and fixup DLL.

Запись в процессах имеет значение Executable, значение, которое должно быть сформировано как строка регулярного выражения, чтобы соответствовать имени исполняемого процесса без пути или расширения файла.An entry in processes has a value named executable, the value for which should be formed as a RegEx string to match the name of an executable process without path or file extension. Средство запуска Windows SDK ожидает синтаксис Екмалист std:: Library RegEx для строки RegEx.The launcher will expect Windows SDK std:: library RegEx ECMAList syntax for the RegEx string.

{
    "applications": [
        {
            "id": "PSFSample",
            "executable": "PSFSampleApp/PrimaryApp.exe",
            "workingDirectory": "PSFSampleApp/"
        }
    ],
    "processes": [
        {
            "executable": "PSFSample"
        }
    ]
}

В приведенном выше примере config.jsв файле, PrimaryApp.exe будет иметь рабочий каталог, перенаправленный в каталог псфсамплеапп .In the above example config.json file, the PrimaryApp.exe will have the working directory re-directed to the PSFSampleApp Directory.

Вставка файлов платформы поддержки пакетов в пакет приложенияInject the Package Support Framework files to the Application package

Создание промежуточной папки пакетаCreate the package staging folder

Если у вас уже есть файл. msix (или. appx), его содержимое можно распаковать в папку макета, которая будет служить промежуточной областью для пакета.If you have a .msix (or .appx) file already, you can unpack its contents into a layout folder that will serve as the staging area for your package. Это можно сделать из командной строки с помощью средства программе makeappx.You can do this from a command prompt using the MakeAppx tool.

Средство программе makeappx можно найти в расположении по умолчанию:MakeAppx tool can be found in its default location:

Архитектура ОСOS Architecture КаталогDirectory
Windows 10 x86Windows 10 x86 C:\Program Files\Windows Kits\10\bin [ version] \x86\makeappx.exeC:\Program Files\Windows Kits\10\bin[version]\x86\makeappx.exe
Windows 10 x64Windows 10 x64 C:\Program Files (x86) \Windows Kits\10\bin [ version] \x64\makeappx.exeC:\Program Files (x86)\Windows Kits\10\bin[version]\x64\makeappx.exe
makeappx unpack /p PrimaryApp.msix /d PackageContents

Приведенная выше команда PowerShell экспортирует содержимое приложения в локальный каталог.The above PowerShell command will export the contents of the application into a local directory.

Вставка необходимых файловInject required files

Добавьте требуемые 32-разрядные и 64-разрядные версии пакетов DLL и исполняемые файлы в каталог пакета.Add the required 32-bit and 64-bit Package Support Framework DLL(s) and executable files to the package directory. Используйте приведенную ниже таблицу в качестве рекомендации, а также включите все необходимые исправления среды выполнения.Use the following table as a guide, you'll also want to include any runtime fixes as required. Сведения об использовании платформы поддержки пакетов для исправления среды выполнения см. в статье документация по устранению неполадок в документации по пакетной поддержке .Visit Package Support Framework Runtime fixes Docs article for guidance on using the Package Support Framework for runtime fixes.

Исполняемый файл приложения — x64Application executable is x64 Исполняемый файл приложения — x86Application executable is x86
PSFLauncher64.exePSFLauncher64.exe PSFLauncher32.exePSFLauncher32.exe
PSFRuntime64.dllPSFRuntime64.dll PSFLauncher32.dllPSFLauncher32.dll
PSFRunDll64.exePSFRunDll64.exe PSFRunDll32.exePSFRunDll32.exe

Указанные выше файлы, а также config.jsв файле должны размещаться в корне каталога пакета приложения.These above identified files, as well as the config.json file must be placed within the root of your application package directory. Эти файлы можно найти в каталоге, в котором находится платформа поддержки установленных пакетов, в каталоге bin .These files can be found within the installed Package Support Framework directory inside of the bin directory.

Обновление манифеста приложенияUpdate the application's manifest

Откройте манифест приложения в текстовом редакторе, а затем задайте атрибуту Executable элемента Application имя исполняемого файла Псфлаунчер.Open the applications manifest in a text editor, then set the Executable attribute of the application element to the name of the PSFLauncher executable file. Если вы знакомы с архитектурой целевого приложения, выберите соответствующую версию, Псфлаунчер [x64/x86]. exe.If you know the architecture of your target application, select the appropriate version, PSFLauncher[x64/x86].exe. Если неизвестно, PSFLauncher32.exe будет работать во всех случаях.If unknown, PSFLauncher32.exe will work in all cases.

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

Повторно упаковать приложениеRe-package the application

Повторно упакуйте приложение с помощью средства программе makeappx.Re-package the application using the makeappx tool. См. Следующий пример того, как упаковать и подписать приложение с помощью PowerShell:See the following example of how to package and sign the application using PowerShell:

makeappx pack /d PackageContents /p PSFSamplePackageFixup.msix
signtool sign /a/v/fd sha256 /f ExportedSigningCertificate.pfx PSFSamplePackageFixup.msix