Упаковка электронного приложения для распространения

В этом руководстве показано, как создать пакет MSIX для распространения приложения Electron с помощью API Windows.

Необходимые условия

Перед упаковкой убедитесь, что вы:

Подготовка к упаковке

Настройте Electron Forge, чтобы исключить временные файлы из окончательной сборки. ignore Добавьте массив вpackagerConfig:forge.config.js

module.exports = {
  packagerConfig: {
    asar: true,
    ignore: [
      /^\/\.winapp($|\/)/,     // SDK packages and headers
      /^\/winapp\.yaml$/,       // SDK config
      /\.pfx$/,                 // Certificate files
      /\.pdb$/,                 // Debug symbols
      /\/obj($|\/)/,            // C# build artifacts
      /\/bin($|\/)/,            // C# build artifacts
      /\.msix$/                 // MSIX packages
    ]
  },
  // ... rest of your config
};

Это важно

Убедитесь, что Package.appxmanifest соответствует структуре упаковаемого приложения:

  • Атрибут Executable должен указывать на правильный .exe файл в упакованных выходных данных.

Создание сертификата разработки

Перед созданием подписанного пакета MSIX создайте сертификат разработки:

npx winapp cert generate

При этом создается файл в корневом каталоге devcert.pfx проекта, который будет использоваться для подписи пакета MSIX.

Параметры упаковки

У вас есть два варианта создания пакета MSIX для приложения Electron:

  1. Вариант 1. Использование winapp CLI напрямую — более настраиваемая, работает с любым упаковщиком
  2. Вариант 2. Использование Electron Forge MSIX Maker — более интегрированный в рабочий процесс Forge

Выберите вариант, подходящий для рабочего процесса.


Этот подход обеспечивает больший контроль над процессом упаковки и работает с любым упаковщиком Electron.

Создайте ваше приложение Electron

Чтобы упаковать приложение Electron с помощью MSIX, сначала необходимо создать рабочий макет. С помощью Electron Forge мы можем использовать команду пакета:

# Package with Electron Forge (or your preferred packager)
npx electron-forge package

Будет создана рабочая версия приложения в папке ./out/ . Точное имя папки будет зависеть от имени и архитектуры приложения (например, my-windows-app-win32-x64).

Создание пакета MSIX

Теперь используйте winapp CLI для создания и подписывания пакета MSIX из упаковаемого приложения:

npx winapp pack .\out\<your-app-folder> --output .\out --cert .\devcert.pfx --manifest .\Package.appxmanifest

Замените <your-app-folder> фактическим именем папки, созданной Electron Forge (например, my-windows-app-win32-x64 для x64 или my-windows-app-win32-arm64 ARM64).

Этот --manifest параметр является необязательным. Если он не указан, он будет искать Package.appxmanifest в папке, упаковаемой или в текущем каталоге.

Этот --cert параметр также является необязательным. Если этот параметр не указан, msix не будет подписан.

Этот --output параметр также является необязательным. Если он не указан, будет использоваться текущий каталог.

Пакет MSIX будет создан как ./out/<your-app-name>.msix.

Подсказка

Эти команды можно добавить в package.json скрипты для удобства:

{
  "scripts": {
    "package-msix": "npm run build-csAddon && npx electron-forge package && npx winapp pack ./out/my-windows-app-win32-x64 --output ./out --cert ./devcert.pfx --manifest Package.appxmanifest"
  }
}

Убедитесь, что обновили путь в соответствии с правильным именем выходной папки.


Вариант 2. Использование Electron Forge MSIX Maker (для пользователей forge)

Если вы уже используете Electron Forge, вы можете интегрировать упаковку MSIX непосредственно в рабочий процесс Forge с помощью @electron-forge/maker-msix создателя.

Установка MSIX Maker

npm install --save-dev @electron-forge/maker-msix

Настройте forge.config.js

Добавьте MSIX Maker в ваше приложение:forge.config.js

module.exports = {
  // ... other config
  makers: [
    {
      name: '@electron-forge/maker-msix',
      config: {
        appManifest: '.\\Package.appxmanifest',
        windowsSignOptions: {
          certificateFile: '.\\devcert.pfx',
          certificatePassword: 'password'
        }
      }
    }
  ],
  // ... rest of your config
};

Обновите Package.appxmanifest

Программа для создания пакетов Electron Forge MSIX использует структуру папок, отличную от подхода winapp CLI. Оно помещает приложение в папку app\ MSIX. Эта папка создается автоматически во время упаковки — ее не нужно создавать самостоятельно. Обновите путь Executable в вашем Package.appxmanifest так, чтобы он указывал на папку app.

<Applications>
  <Application Id="myApp"
    Executable="app\my-app.exe"
    EntryPoint="Windows.FullTrustApplication">
    <!-- ... rest of your application config -->
  </Application>
</Applications>

Замените my-app.exe фактическим именем исполняемого файла. Это основано на поле productName (или name) в вашем package.json.

Замечание

Создатель Forge MSIX ищет инструменты Windows SDK на основе MinVersion в Package.appxmanifest. Если вы видите сообщение об ошибке, связанное с отсутствием WindowsKit, убедитесь, что на вашем компьютере установлена версия SDK, указанная в MinVersion, или обновите MinVersion, чтобы она соответствовала установленной версии SDK.

Создание пакета MSIX

Теперь можно создать пакет MSIX. --targets Используйте флаг для запуска только разработчика MSIX (в противном случае Forge будет запускать все настроенные производители):

npx electron-forge make --targets @electron-forge/maker-msix

Пакет MSIX будет создан в папке ./out/make/msix/<arch>/ (например, ./out/make/msix/arm64/ или ./out/make/msix/x64/).

Подсказка

Этот подход более интегрирован с рабочим процессом Electron Forge и автоматически обрабатывает упаковку и создание MSIX на одном шаге.

Установка и проверка MSIX

Сначала установите сертификат разработки (однократная настройка):

# Run as Administrator:
npx winapp cert install .\devcert.pfx

Теперь установите пакет MSIX. Дважды щелкните msix-файл или выполните следующую команду:

# Option 1 output:
Add-AppxPackage .\out\<your-app-name>.msix

# Option 2 output:
Add-AppxPackage .\out\make\msix\<arch>\<your-app-name>.msix

Замените <your-app-name> и <arch> фактическими значениями из выходных данных сборки.

Ваше приложение появится в меню "Пуск" Запустите его и протестируйте функции API Windows.

Параметры распространения

После того как у вас есть рабочий пакет MSIX, у вас есть несколько вариантов распространения приложения:

Прямая загрузка

Разместите пакет MSIX на веб-сайте для прямого скачивания. Убедитесь, что вы подписываете его с помощью сертификата подписи кода из доверенного центра сертификации (ЦС), чтобы пользователи могли установить его без предупреждений системы безопасности.

Microsoft Store

Отправьте приложение в Microsoft Store для наиболее широкого распространения и автоматического обновления. Вам понадобится:

  1. Создание учетной записи Microsoft Partner Center
  2. Зарезервируйте имя приложения
  3. Обновите Package.appxmanifest идентификатор магазина. Нет необходимости подписывать пакет msix, процесс публикации в магазине автоматически его подпишет.
  4. Отправьте на сертификацию

Дополнительные сведения: Опубликуйте ваше приложение в Microsoft Store

Корпоративное распределение

Распространяйте напрямую клиентам предприятия через:

  • Корпоративный портал — для организаций, использующих Intune
  • Прямая загрузка — размещение MSIX на веб-сайте
  • Сайдлоадинг — установка с помощью PowerShell или установщика приложений

Дополнительные сведения: распространение приложений за пределами Магазина

Установщик приложений

.appinstaller Создайте файл для автоматического обновления:

<?xml version="1.0" encoding="utf-8"?>
<AppInstaller
    Uri="https://your-domain.com/packages/myapp.appinstaller"
    Version="1.0.0.0"
    xmlns="http://schemas.microsoft.com/appx/appinstaller/2017/2">
    <MainPackage
        Name="YourAppName"
        Version="1.0.0.0"
        Publisher="CN=YourPublisher"
        Uri="https://your-domain.com/packages/myapp.msix"
        ProcessorArchitecture="x64" />
    <UpdateSettings>
        <OnLaunch HoursBetweenUpdateChecks="24" />
    </UpdateSettings>
</AppInstaller>

Дополнительные сведения: общие сведения о файле установщика приложений

Дальнейшие шаги

Поздравляю! Вы успешно собрали приложение Electron для Windows для распространения! 🎉

Дополнительные ресурсы

Вернуться к обзору

Получение справки

Удачного распространения! 🚀