Поделиться через


Справочник по разработке приложений для Windows с использованием интерфейса командной строки (CLI)

Это важно

CLI разработки Windows App в настоящее время находится в общественном предварительном тестировании. Функции и команды могут изменяться до окончательного выпуска.

На этой странице описаны все доступные команды для интерфейса командной строки Winapp.

Глобальные опции

Все команды поддерживают следующие глобальные параметры:

Опция Описание
--verbose, -v Включите детализированный вывод для подробного журналирования
--quiet, -q Подавление сообщений о ходе выполнения
--help, -h Показать справку по команде

Глобальный каталог кэша

WinApp создает каталог для кэширования файлов, которые можно совместно использовать для нескольких проектов. По умолчанию это $UserProfile/.winapp.

Чтобы использовать другое расположение, задайте WINAPP_CLI_CACHE_DIRECTORY переменную среды:

$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"

Команды установки

инициализация

Инициализируйте каталог с Windows SDK, Windows App SDK и необходимыми ресурсами для современной разработки Windows.

winapp init [base-directory] [options]

Аргументы:

Аргумент Описание
base-directory Базовый или корневой каталог для приложения или рабочей области (по умолчанию: текущий каталог)

Варианты.

Опция Описание
--config-dir <path> Каталог для чтения и хранения конфигурации (по умолчанию: текущий каталог)
--setup-sdks Режим установки пакета SDK: stable (по умолчанию), preview, experimentalили none
--ignore-config, --no-config Не используйте файл конфигурации для управления версиями
--no-gitignore Не обновляйте файл .gitignore
--use-defaults, --no-prompt Не запрашивайте и используйте значения по умолчанию для всех запросов.
--config-only Обработка только операций файлов конфигурации, пропуск установки пакета

Что он делает:

  • Создает winapp.yaml файл конфигурации
  • Скачивает пакет Windows SDK и пакеты Windows App SDK
  • Создает заголовки и двоичные файлы C++/WinRT
  • Создает AppxManifest.xml
  • Настройка средств сборки и включение режима разработчика
  • Обновляет .gitignore, чтобы исключить созданные файлы

Автоматическое обнаружение проекта .NET:

Если файл .csproj найден в целевом каталоге, init использует упрощенный поток .NET:

  • Проверяет и обновляет TargetFramework до совместимого с Windows TFM (например, net10.0-windows10.0.26100.0)
  • Добавляет Microsoft.WindowsAppSDK и Microsoft.Windows.SDK.BuildTools как записи NuGet PackageReference непосредственно в .csproj
  • Создает appxmanifest.xml, ресурсы и сертификат разработки
  • Не создает winapp.yaml или загружает проекции на C++ (используйте dotnet restore для пакетов NuGet)

Примеры:

# Initialize current directory
winapp init

# Initialize with experimental packages
winapp init --setup-sdks experimental

# Initialize specific directory without prompts
winapp init ./my-project --use-defaults

# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init

Подсказка

Если вы запустили init с помощью --setup-sdks none, и вам позже понадобятся SDK, повторно запустите winapp init --use-defaults --setup-sdks stable. Это сохраняет существующие файлы (манифест и т. д.).

Восстановление

Восстановите пакеты и повторно создайте файлы на основе существующей winapp.yaml конфигурации.

winapp restore [options]

Варианты.

Опция Описание
--config-dir <path> Каталог, содержащий winapp.yaml (по умолчанию: текущий каталог)

Что он делает:

  • Считывает существующую winapp.yaml конфигурацию
  • Скачивание и обновление пакетов SDK для указанных версий
  • Повторно создает заголовки и двоичные файлы C++/WinRT

Замечание

Для проектов .NET, инициализированных с помощью winapp init, нет winapp.yaml. Вместо этого используется dotnet restore для восстановления пакетов NuGet.

Примеры:

# Restore from winapp.yaml in current directory
winapp restore

update

Обновите пакеты до последних версий и обновите файл конфигурации.

winapp update [options]

Варианты.

Опция Описание
--config-dir <path> Каталог, содержащий winapp.yaml (по умолчанию: текущий каталог)
--setup-sdks Режим установки пакета SDK: stable (по умолчанию), preview, experimentalили none

Что он делает:

  • Считывает существующую winapp.yaml конфигурацию
  • Обновляет все пакеты до последних доступных версий
  • winapp.yaml Обновляет файл с новыми номерами версий
  • Повторно создает заголовки и двоичные файлы C++/WinRT

Примеры:

# Update packages to latest versions
winapp update

# Update including experimental packages
winapp update --setup-sdks experimental

Команды упаковки

pack

Создайте пакеты MSIX из подготовленных каталогов приложений. Требуется, чтобы файл appxmanifest.xml присутствовал в целевом каталоге, в текущем каталоге или передан с параметром --manifest .

winapp pack <input-folder> [options]

Аргументы:

Аргумент Описание
input-folder Каталог, содержащий файлы приложения для упаковывания

Варианты.

Опция Описание
--output <filename> Выходное имя файла MSIX (по умолчанию: <name>.msix)
--name <name> Имя пакета (по умолчанию: из манифеста)
--manifest <path> Путь к AppxManifest.xml (по умолчанию: автоматическое обнаружение)
--cert <path> Путь к сертификату подписывания (включает автоматическую подпись)
--cert-password <password> Пароль сертификата (по умолчанию: "пароль")
--generate-cert Создание нового сертификата разработки
--install-cert Установка сертификата на компьютер
--publisher <name> Имя издателя для создания сертификатов
--self-contained Среда выполнения пакета Windows App SDK
--skip-pri Пропуск создания файлов PRI
--executable <path> Путь к исполняемому файлу относительно входной папки. Используется для разрешения $targetnametoken$ плейсхолдеров в манифесте.

Что он делает:

  • Проверяет и обрабатывает файлы AppxManifest.xml
  • $placeholder$ Разрешает маркеры в манифесте (см. заполнители манифеста)
  • Обеспечивает корректность зависимостей фреймворка
  • Обновляет параллельные манифесты с регистрацией
  • Обрабатывает автономное развертывание Windows App SDK
  • Подписывает пакет, если предоставлен сертификат

Примеры:

# Package directory with auto-detected manifest
winapp pack ./dist

# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx

# Package with generated and installed certificate and self-contained runtime
winapp pack ./dist --generate-cert --install-cert --self-contained

# Package with explicit executable
winapp pack ./dist --executable MyApp.exe

создать-отладочный-идентификатор

Создайте идентификацию приложения для отладки без полной упаковки MSIX с помощью внешнего расположения/разреженной упаковки.

winapp create-debug-identity [entrypoint] [options]

Аргументы:

Аргумент Описание
entrypoint Путь к исполняемому файлу (.exe) или скрипту, которому требуется идентификация

Варианты.

Опция Описание
--manifest <path> Путь к AppxManifest.xml (по умолчанию: ./appxmanifest.xml)
--no-install Не устанавливайте пакет после создания
--keep-identity Сохраните идентичность манифеста в неизменном виде, без добавления .debug к имени пакета или идентификатору приложения.

Что он делает:

  • Изменяет параллельный манифест исполняемого файла
  • Регистрирует разреженный пакет для идентичности
  • Активирует отладку API, требующих аутентификации

Примеры:

# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe

# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml

Команды манифеста

Генерация манифеста

Создайте AppxManifest.xml из шаблонов.

winapp manifest generate [directory] [options]

Аргументы:

Аргумент Описание
directory Каталог для создания манифеста (по умолчанию: текущий каталог)

Варианты.

Опция Описание
--package-name <name> Имя пакета (по умолчанию: имя папки)
--publisher-name <name> Publisher CN (по умолчанию: CN=<current user>)
--version <version> Версия (по умолчанию: "1.0.0.0")
--description <text> Описание (по умолчанию: "Мое приложение")
--entrypoint <path> Исполняемый файл или скрипт точки входа
--template <type> Тип шаблона: packaged (по умолчанию) или sparse
--logo-path <path> Путь к файлу изображения логотипа
--if-exists <Error\|Overwrite\|Skip> Поведение, если файл уже существует (по умолчанию: ошибка)

Шаблоны:

  • packaged — Стандартный манифест упаковаемого приложения
  • sparse — Манифест приложения с использованием разреженного/внешнего расположения упаковки

Заполнители для манифеста

Созданные манифесты используют $placeholder$ токены (ограниченные знаками доллара), которые обрабатываются автоматически в процессе упаковки.

Заполнитель Решено Пример
$targetnametoken$ Имя исполняемого файла без расширения Executable="$targetnametoken$.exe" заменяется на Executable="MyApp.exe".
$targetentrypoint$ Windows.FullTrustApplication Всегда решается автоматически

Как обрабатываются заполнители:

  • winapp pack $targetnametoken$ решает --executable с использованием параметра или автоматически обнаруживая один .exe во входной папке.
  • winapp create-debug-identity разрешает $targetnametoken$ из аргумента точки входа, если дан.
  • winapp manifest generate --executable извлекает метаданные из исполняемого файла, но оставляет $targetnametoken$.exe в манифесте для последующего разрешения.

Подсказка

Сохранение $targetnametoken$ в манифесте проверенного кода позволяет избежать жесткого написания исполняемых имен и работает с сборками winapp pack и Visual Studio.

Примеры:

# Generate standard manifest interactively
winapp manifest generate

# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite

ресурсы обновления манифеста

Создайте все необходимые ресурсы образов MSIX из одного исходного образа.

winapp manifest update-assets <image-path> [options]

Аргументы:

Аргумент Описание
image-path Путь к файлу исходного изображения (PNG, JPG, GIF и т. д.)

Варианты.

Опция Описание
--manifest <path> Путь к файлу AppxManifest.xml (по умолчанию: поиск текущего каталога)

Принимает один исходный образ и автоматически создает все 12 необходимых ресурсов образов MSIX в правильных размерах. Ресурсы сохраняются в Assets каталоге относительно расположения манифеста.

Примеры:

# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png

# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml

Команды сертификата и подписывания

Сгенерировать сертификат

Создайте сертификаты разработки для подписывания пакетов.

winapp cert generate [options]

Варианты.

Опция Описание
--manifest <appxmanifest.xml> Извлечение сведений издателя из appxmanifest.xml
--publisher <name> Имя издателя для сертификата
--output <path> Путь к файлу выходного сертификата
--password <password> Пароль сертификата (по умолчанию: "пароль")
--valid-days <days> Число дней, в течение которых сертификат действителен (по умолчанию: 365)
--install Установите сертификат в локальное хранилище машины после генерации
--if-exists <Error\|Overwrite\|Skip> Поведение, если файл сертификата уже существует (по умолчанию: ошибка)

Установка сертификата

Установите сертификат в хранилище сертификатов компьютера.

winapp cert install <cert-path>

Аргументы:

Аргумент Описание
cert-path Путь к файлу сертификата для установки

Примеры:

# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx

# Install certificate to machine
winapp cert install ./mycert.pfx

знак

Подписывайте пакеты MSIX и исполняемые файлы с помощью сертификатов.

winapp sign <file-path> [options]

Аргументы:

Аргумент Описание
file-path Путь к пакету MSIX или исполняемому файлу для подписывания

Варианты.

Опция Описание
--cert <path> Путь к сертификату подписи
--cert-password <password> Пароль сертификата (по умолчанию: "пароль")

Примеры:

# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx

# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword

Команды служебной программы

Инструмент

Доступ к средствам Windows SDK напрямую. Использует средства, доступные в Microsoft.Windows.SDK.BuildTools.

winapp tool <tool-name> [tool-arguments]

Доступные средства:

  • makeappx — создание пакетов приложений и управление ими
  • signtool — подписывает файлы и проверяет подписи
  • mt — утилита манифеста для сборок, выполняемых бок о бок
  • Другие средства Windows SDK из Microsoft.Windows.SDK.BuildTools

Примеры:

# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix

store

Выполните команду Developer CLI в Microsoft Store. Эта команда загружает интерфейс командной строки разработчика Microsoft Store, если он еще не скачан. Дополнительные сведения см. в интерфейсе командной строки разработчика Microsoft Store.

winapp store [args...]

Аргументы:

Аргумент Описание
args... Аргументы, которые необходимо передать непосредственно в CLI msstore

Примеры:

# List all apps in your Microsoft Partner Center account
winapp store app list

# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>

get-winapp-path

Получите пути к установленным компонентам пакета SDK для Windows.

winapp get-winapp-path [options]

Возвращает пути к каталогу .winapp рабочей области, каталогам установки пакетов и созданным расположениям заголовков.


команды Node.js/Electron

Эти команды доступны только в пакете NPM.

node создать-дополнение

Создайте собственные шаблоны надстроек C++ или C# с помощью пакета SDK для Windows и интеграции Windows App SDK.

npx winapp node create-addon [options]

Варианты.

Опция Описание
--name <name> Имя надстройки (по умолчанию: nativeWindowsAddon)
--template Выберите тип надстройки: cs или cpp (по умолчанию: cpp)
--verbose Включите подробный вывод

Что он делает:

  • Создает каталог надстройки с файлами шаблонов
  • Создает файлы binding.gyp и addon с помощью примеров пакета SDK для Windows
  • Установка необходимых зависимостей npm
  • Добавляет скрипт сборки в package.json

Примеры:

# Generate addon with default name
npx winapp node create-addon

# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs

node add-electron-debug-identity

Добавьте идентификацию приложения в разработку в Electron с помощью разреженного пакета. Необходим файл appxmanifest.xml (создайте его с помощью winapp init или winapp manifest generate).

Это важно

Известна проблема с разреженным упаковыванием приложений Electron, которая приводит к сбою приложения при запуске или некорректному отображению веб-содержимого. Проблема устранена в Windows, но еще не распространилась на все устройства. Вы можете, используя --no-sandbox флаг, отключить песочницу в приложении Electron в качестве обходного решения. Эта проблема не влияет на полную упаковку MSIX.

Чтобы удалить идентификацию для отладки Electron, используйте winapp node clear-electron-debug-identity.

npx winapp node add-electron-debug-identity [options]

Варианты.

Опция Описание
--manifest <path> Путь к настраиваемому файлу appxmanifest.xml, по умолчанию: appxmanifest.xml в текущем каталоге.
--no-install Не устанавливайте и не изменяйте зависимости; настраивайте только идентификатор отладки в Electron
--keep-identity Сохраняйте удостоверение манифеста без изменения, без добавления .debug
--verbose Включите подробный вывод

Примеры:

# Add identity to Electron development process
npx winapp node add-electron-debug-identity

# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/appxmanifest.xml

node clear-electron-debug-identity

Удалите идентификатор пакета из процесса отладки Electron, восстановив исходный файл electron.exe из резервной копии.

npx winapp node clear-electron-debug-identity [options]

Варианты.

Опция Описание
--verbose Включите подробный вывод

Примеры:

# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity