Публикация десктоп-приложения в Microsoft Store
Microsoft Store поддерживает несколько форматов приложений: традиционные Win32/WPF, UWP и упакованные MSIX-приложения. Electron и другие фреймворки публикуются через MSIX — это позволяет попасть в Store без переписывания на WinRT.
Форматы публикации
| Формат | Аудитория | Особенности |
|---|---|---|
| MSIX (упакованный Win32) | Все Windows 10/11 | Полный доступ к Win32 API |
| UWP | Только Store-версии | Sandbox, ограниченный доступ к файловой системе |
| PWA | Через Edge/Store | Только веб-приложения |
Создание MSIX из Electron-приложения
electron-builder умеет собирать MSIX напрямую:
# electron-builder.yml
win:
target:
- target: nsis
- target: msix
icon: build/icon.ico
msix:
applicationId: com.company.AppName
backgroundColor: "#transparent"
displayName: "App Name"
publisherDisplayName: "Company Name"
identityName: "CompanyName.AppName"
npx electron-builder --win msix
Для публикации в Store нужен сертификат от Trusted CA (DigiCert, GlobalSign) или сертификат из Partner Center. Self-signed сертификат не подойдёт.
Регистрация в Partner Center
- Зарегистрировать аккаунт разработчика — $19 единоразово (физлицо) или $99 (компания)
- Создать новое приложение: Partner Center → Apps → New product
- Зарезервировать имя приложения
- Заполнить метаданные: описание, скриншоты (минимум 3, разрешение от 1366×768), категория, возрастной рейтинг
Требования к пакету
# Проверка пакета перед загрузкой
# Windows App Certification Kit (WACK)
& "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcert.exe" `
test -apppackagepath .\AppName.msix -reportoutputpath .\report.xml
# Или через PowerShell
Get-AppxPackage -Name "CompanyName.AppName"
WACK проверяет: наличие валидного манифеста, отсутствие запрещённых API, корректность иконок (обязательны размеры 44×44, 150×150, 310×310 в PNG).
AppxManifest.xml
electron-builder генерирует манифест автоматически, но иногда нужны ручные правки:
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
<Identity Name="CompanyName.AppName"
Publisher="CN=Company Name, O=Company Name, C=US"
Version="1.0.0.0" />
<Properties>
<DisplayName>App Name</DisplayName>
<PublisherDisplayName>Company Name</PublisherDisplayName>
<Logo>assets\StoreLogo.png</Logo>
</Properties>
<Capabilities>
<rescap:Capability Name="runFullTrust" /> <!-- Для Win32 приложений -->
<Capability Name="internetClient" />
</Capabilities>
<Applications>
<Application Id="App" Executable="AppName.exe" EntryPoint="Windows.FullTrustApplication">
<uap:VisualElements DisplayName="App Name"
Description="App description"
BackgroundColor="transparent"
Square150x150Logo="assets\Square150x150Logo.png"
Square44x44Logo="assets\Square44x44Logo.png">
</uap:VisualElements>
</Application>
</Applications>
</Package>
GitHub Actions для автоматической публикации
- name: Build MSIX
run: npx electron-builder --win msix
env:
CSC_LINK: ${{ secrets.WIN_CERTIFICATE }}
CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTIFICATE_PWD }}
- name: Upload to Partner Center
uses: microsoft/store-submission-action@v1
with:
seller-id: ${{ secrets.MS_SELLER_ID }}
product-id: ${{ secrets.MS_PRODUCT_ID }}
package-path: dist/AppName.msix
tenant-id: ${{ secrets.MS_TENANT_ID }}
client-id: ${{ secrets.MS_CLIENT_ID }}
client-secret: ${{ secrets.MS_CLIENT_SECRET }}
Публикация проходит модерацию Microsoft (обычно 1–3 рабочих дня). Обновления проходят быстрее, чем первая публикация.
Сроки
Подготовка MSIX, прохождение WACK и первая публикация в Microsoft Store: 3–5 рабочих дней.







