From de4352764223e2d5e8c1f7efd6e4b9535f457fd9 Mon Sep 17 00:00:00 2001 From: Aleksandr Neychev Date: Thu, 13 Aug 2026 16:50:20 +0500 Subject: [PATCH] added documentaion for publishing --- Packaging/PUBLISHING.RU.md | 383 +++++++++++++++++++++++++++++++++++++ 1 file changed, 383 insertions(+) create mode 100644 Packaging/PUBLISHING.RU.md diff --git a/Packaging/PUBLISHING.RU.md b/Packaging/PUBLISHING.RU.md new file mode 100644 index 0000000..bbe08b3 --- /dev/null +++ b/Packaging/PUBLISHING.RU.md @@ -0,0 +1,383 @@ +# Публикация в Microsoft Store + +Инструкция с нуля: от регистрации разработчика до отправки пакета на проверку. +Документ существует только на русском — переводить его не нужно. + +Ссылки на первоисточники стоят по ходу текста, сводный список — в конце. +Правила Store меняются, поэтому перед подачей стоит сверяться с ними, а не с +пересказом здесь: этот документ отражает положение дел на август 2026 года. + +## 1. Аккаунт разработчика + +С 2026 года регистрация бесплатна для обоих типов аккаунта. Прежние взносы +($19 и $99) отменены — [объявление для компаний][free-company], +[объявление для частных лиц][free-individual]. Новостные заметки за 2025 год, +где у Company ещё указан взнос $99, устарели. + +**Начинать нужно с https://storedeveloper.microsoft.com** — это единственный +вход в бесплатный процесс регистрации. Если зайти через Partner Center, Visual +Studio или Xbox, откроется старый порядок со взносом. + +### Какой тип выбрать + +Критерии обоих типов и порядок регистрации — [«Открытие аккаунта +разработчика»][open-account]. + +| | Individual | Company | +|---|---|---| +| Кому | частное лицо, хобби, некоммерческие проекты | ИП, ТОО, организация — всё, что связано с предпринимательской деятельностью | +| Имя издателя в Store | ваше имя | название организации | +| Вход | только личный аккаунт Microsoft | личный аккаунт или рабочий Microsoft Entra ID | +| Проверка | документ с фотографией и селфи | D-U-N-S или уставные документы плюс рабочая почта на домене организации | +| Срок | минуты, если снимки читаемые | от минут до 2–5 рабочих дней при ручной проверке | + +Company доступен только тем, у кого уже есть зарегистрированное юридическое лицо +или ИП: проверка требует либо номера D-U-N-S, либо регистрационных документов. +Без них остаётся Individual, и для личного бесплатного приложения этого +достаточно. + +Три вещи после регистрации **не меняются** — тип аккаунта, страна и имя издателя +([FAQ по управлению аккаунтом][account-faq]). Что с этим делать при отсутствии +компании и планах на платный продукт, разобрано в +[разделе 9](#9-регистрация-из-казахстана). + +### Что подготовить + +**Для Individual:** удостоверение личности или паспорт (оригинал, не копия) и +телефон с камерой — снимок документа и селфи делаются на мобильном. + +**Для Company:** +- номер D-U-N-S, если он есть — тогда данные подтянутся автоматически и проверка + пройдёт быстрее. Иначе понадобится справка о регистрации, устав или выписка из + государственного реестра; +- почта на домене организации. Gmail и подобные не принимаются; если домен почты + не совпадает с доменом организации, попросят подтвердить владение доменом — + счётом от регистратора или записью из реестра доменов. + +На каждый вид проверки даётся не более трёх попыток, поэтому данные лучше +перепроверить до отправки. Ответить на запрос документов нужно в течение 30 дней. + +### Налоги и выплаты + +Приложение бесплатное, встроенных покупок и рекламы нет — значит платёжный +профиль и налоговые формы не нужны ([FAQ по управлению аккаунтом][account-faq]). +Они потребуются, только если появятся платные функции, — тогда см. +[раздел 8](#8-если-приложение-будет-платным). + +После создания аккаунта данные расходятся по Partner Center до получаса. Если +раздел «Apps & Games» не появился сразу — подождать и обновить страницу. + +## 2. Резервирование имени + +Partner Center → **Apps and games** → **New product** → **MSIX or PWA app**. +Ввести имя, нажать **Check availability**, затем **Reserve product name**. + +Подробности — [«Резервирование имени приложения MSIX»][reserve-name] и +[«Управление резервированием имён»][manage-names]. + +Имя можно занять за три месяца до публикации, даже если приложение ещё не +готово. Стоит сразу занять запасные написания — например `CursorLang` и +`Cursor Lang`. + +## 3. Данные пакета + +После резервирования: **Product management** → **Product identity**. На странице +будут три значения: + +| Значение в Partner Center | Куда подставить | +|---|---| +| Package/Identity/Name | параметр `-IdentityName` | +| Package/Identity/Publisher | параметр `-Publisher`, вида `CN=` и длинный идентификатор | +| Package/Properties/PublisherDisplayName | параметр `-PublisherDisplayName` | + +Эти значения должны совпадать с манифестом пакета до символа. Расхождение даёт +при загрузке невнятную ошибку, которая не называет поле, — поэтому копировать +их нужно буквально, а не набирать руками. Разбор таких ошибок — +[«Устранение ошибок отправки MSIX»][submission-errors]. + +В сборочном конвейере эти значения лежат в переменных репозитория +`MSIX_IDENTITY_NAME`, `MSIX_PUBLISHER` и `MSIX_PUBLISHER_DISPLAY_NAME`. Это +переменные, а не секреты: identity виден в любом опубликованном пакете, а +маскирование в логах только мешало бы разбирать ошибки сборки. + +## 4. Сборка пакета + +```powershell +pwsh -File Packaging\build-msix.ps1 ` + -Version 1.0.0.0 ` + -IdentityName "" ` + -Publisher "" ` + -PublisherDisplayName "" +``` + +Получится `artifacts\packages\CursorLang-1.0.0.0-x64.msix`. Загружать его нужно +**без подписи**: Store подписывает пакет своим сертификатом. + +Версия при каждой следующей отправке должна расти, а последнее число всегда +остаётся нулём. + +## 5. Заявка + +**Product release** → **Start submission**. Разделы можно заполнять в любом +порядке. Полный перечень полей с пометками обязательности — +[«Создание заявки для приложения MSIX»][create-submission]. + +### Pricing and availability + +Обязательны рынки, аудитория, обнаружимость, расписание и цена. Всё, кроме цены, +имеет разумные значения по умолчанию — цену выставить **Free** +([подробности о ценах и доступности][price-availability]). + +### Properties + +- **Category** — обязательна. Подходит *Productivity* либо *Utilities & tools*. +- **Privacy policy URL** — обязателен, только если приложение собирает или + передаёт персональные данные. CursorLang не собирает ничего: настройки лежат + в папке приложения, наружу ничего не уходит. Поле можно оставить пустым, но + безопаснее выложить короткую страницу с фразой о том, что данные не + собираются, — это снимает вопросы у проверяющих. +- **Contact details** — обязательны для аккаунта Company. + +### Age ratings + +Обязательна вся анкета. Приложение не игровое, ничего не собирает — ответы +однозначные, рейтинг присвоится автоматически. + +### Packages + +Загрузить `.msix`. Раздел остаётся «Incomplete», пока не заполнены все +обязательные поля, даже если сам пакет уже помечен как «Validated». + +### Store listings + +Хотя бы для одного языка. Стоит заполнить и английский, и русский — приложение +переведено на оба. Основным лучше сделать английский: он работает как запасной +вариант для рынков, где отдельного перевода нет. + +Обязательны описание и **минимум один снимок экрана** (рекомендуется четыре и +больше). Снимки: PNG, от 1366×768. Показать стоит окно настроек и саму подсказку +у курсора — вторую снять сложнее, поможет отложенный снимок экрана. + +### Submission options + +- **Restricted capabilities** — заполнить обязательно, потому что пакет объявляет + `runFullTrust`. Для обычной программы рабочего стола это подтверждается без + разбирательств; в обосновании достаточно написать, что приложение — обычная + программа Windows, а не UWP. +- **Notes for certification** — не обязательно, но здесь лучше не молчать. + Приложение ставит низкоуровневый перехватчик клавиатуры, и без объяснений это + выглядит подозрительно. Стоит написать примерно так: + + > The app installs a WH_KEYBOARD_LL hook to offer an optional Caps Lock + > shortcut that switches the keyboard layout instead of toggling case. The + > hook only inspects the Caps Lock key, is off by default, and is enabled by + > the user in the app's settings. No keystrokes are recorded, stored or + > transmitted anywhere. + +Затем **Submit for certification**. + +## 6. Чего ждать от проверки + +Проверка занимает обычно от нескольких часов до трёх дней. Проверяющие смотрят +сам пакет, а не исходники: ссылка на репозиторий им не нужна и, скорее всего, +останется без внимания. Всё, что важно донести, идёт в Notes for certification. + +Слабые места именно этого приложения: + +- **Перехватчик клавиатуры.** Главный повод для вопросов. Снимается пояснением в + Notes for certification и тем, что настройка выключена по умолчанию. +- **Права администратора.** Их больше нет — ни в манифесте, ни в поведении. + Возможности `allowElevation` в пакете тоже нет. Возвращать их нельзя: + «приложения, которым права администратора нужны хоть для какой-то части + работы, в Store не принимаются» — [«Подготовка к упаковке»][prepare-package]. +- **Чистое удаление.** Настройки упакованной версии лежат в папке данных пакета + и уходят вместе с ним — это проверено. + +Общие требования, по которым идёт проверка, — [правила Microsoft Store][policies]. + +## 7. Обновления + +Порядок тот же, короче: поднять версию, собрать пакет теми же значениями +identity, создать новую заявку, загрузить пакет. Имя резервировать заново не +нужно. + +## 8. Если приложение будет платным + +Раздел на будущее: для CursorLang ничего из этого не нужно. + +### Нужен ли для этого Company + +Не обязательно. Платёжный профиль доступен обоим типам аккаунта, и запрета +продавать с Individual в документации нет ([FAQ по управлению +аккаунтом][account-faq]). Критерий Individual против Company описывает характер +деятельности ([типы аккаунтов][account-types]), а не техническую возможность +брать деньги. + +Практический вывод: заводить ИП **ради требований Microsoft** не нужно. Оно +скорее понадобится по местному праву — чтобы легально оформлять регулярный доход +из-за рубежа. Это вопрос к бухгалтеру, а не к Partner Center. + +Если всё же понадобится именно Company, помните: сменить тип у существующего +аккаунта нельзя, придётся заводить второй, а уже опубликованные приложения в +него штатно не переедут — см. [раздел 9](#9-регистрация-из-казахстана). + +### Платёжный и налоговый профиль + +Account settings → **Payout and tax profile** +([порядок настройки][payout-setup]). Без них платное приложение не отправить на +проверку. Понадобятся банковский счёт и налоговая форма: для тех, кто не платит +налоги в США, это W-8BEN (частное лицо) или W-8BEN-E (организация) +([налоговые сведения][tax-info], [налоговые обязанности][tax-details]). + +Между Казахстаном и США действует соглашение об избежании двойного +налогообложения, поэтому удержание с продаж в США ниже базовых 30%. Точную +ставку показывают при заполнении формы — гадать заранее не нужно. + +### Выплаты в Казахстан + +Поддерживаются. По [таблице выплат по регионам][payout-regions] для Казахстана +доступны и Microsoft Store, и PayPal. + +| | | +|---|---| +| Порог выплаты | 50 USD — ниже суммы накапливаются | +| PayPal | около одного рабочего дня | +| ACH/SEPA | два–три рабочих дня | +| Банковский перевод | семь–десять рабочих дней | + +### Доля Microsoft + +По действующим условиям — 15% с продаж приложений и 12% с игр; для неигровых +приложений можно подключить собственную платёжную систему и оставлять себе всю +выручку. Эти цифры широко приводятся в отраслевых публикациях, но отдельной +страницы с ними в документации нет: обязывающий документ — +[соглашение разработчика приложений][developer-agreement], и сверяться нужно с +его действующей редакцией. + +### Что меняется в самом приложении + +Почти ничего. Store выдаёт лицензию при покупке и без неё приложение не +устанавливает, так что проверка в коде не обязательна. При желании лицензию +читают через [`Windows.Services.Store`][store-api]. Пробный период включается в +Partner Center и правок в коде не требует. + +### Рынки + +Для платного приложения список стран стоит выбрать осознанно, а не оставлять +«все»: где-то автоматически пересчитанная цена окажется неуместной, где-то +появятся местные налоговые обязанности. + +## 9. Регистрация из Казахстана + +Раздел для случая, когда разработчик живёт и платит налоги в Казахстане, а +гражданство у него другое. Юридических советов здесь нет — только то, что +касается устройства Partner Center. + +### Страна аккаунта важнее гражданства + +Microsoft смотрит на страну проживания и налогового резидентства, а не на +паспорт. Страна указывается при регистрации и **после неё не меняется** +([FAQ по управлению аккаунтом][account-faq]); штатного способа исправить её нет, +остаётся обращение в поддержку без гарантии результата. + +Разница между Казахстаном и Россией существенная и необратимая: + +| | Казахстан | Россия | +|---|---|---| +| Выплаты Microsoft Store | да | да, но PayPal помечен как приостановленный | +| Налоговое соглашение с США | [действует][irs-kazakhstan], предел по роялти 10% | [приостановлено с 16 августа 2024][irs-russia] | +| Удержание в США | 10% при поданной форме W-8BEN | 30%, льготные ставки не применяются | + +Данные о выплатах — из [таблицы выплат по регионам][payout-regions], налоговые — +из перечня [действующих соглашений США][irs-treaties]. + +### Документ и автозаполнение профиля + +Регистрация Individual идёт через снимок документа и селфи, после чего профиль +**заполняется данными из документа**. Отсюда практическое правило: если есть +казахстанский документ — вид на жительство или удостоверение личности, — +верифицироваться лучше по нему. Если под рукой только иностранный паспорт, +страну и адрес нужно проверить и при необходимости исправить на казахстанские +**до** подтверждения профиля. + +### Имя издателя задаётся один раз + +Publisher display name — то, что видят пользователи в карточке приложения, — тоже +не меняется после регистрации. Если в Store должно значиться название бренда, а +не ФИО, это задаётся на шаге заполнения профиля. Переименование потом — только +через поддержку, с вероятным ответом «заводите новый аккаунт». + +### Приложения между аккаунтами не переносятся + +Штатной процедуры передачи приложения из одного аккаунта в другой в Partner +Center нет. Значит, если позже завести отдельный Company-аккаунт под платный +продукт, ранее опубликованное бесплатное приложение останется на первом. + +Для бесплатной утилиты это не проблема: она продолжит работать и обновляться там, +где опубликована. Но переиграть решение задним числом не выйдет, поэтому выбор +имени издателя и страны стоит сделать вдумчиво с первого раза. + +### Порядок действий + +1. Начать с https://storedeveloper.microsoft.com — иначе откроется старый платный + процесс. +2. Выбрать **Individual**, если зарегистрированного юридического лица или ИП нет. +3. Верифицироваться по казахстанскому документу, если он есть. +4. Проверить, что страна в профиле — Казахстан, а адрес казахстанский. +5. Проверить имя издателя: оно останется навсегда. +6. Платёжный и налоговый профиль пропустить — для бесплатного приложения он не + нужен. + +Когда дойдёт до платного приложения, добавится форма +[W-8BEN][w8ben] с указанием Казахстана как страны налогового резидентства и ИИН в +поле иностранного налогового номера. Сертификат налогового резидентства РК +Microsoft не запрашивает, но он подтверждает право на ставку 10%, если вопрос +возникнет. + +## Источники + +- [Открытие аккаунта разработчика][open-account] +- [Типы аккаунтов разработчика][account-types] +- [Бесплатная регистрация для компаний][free-company] +- [Бесплатная регистрация для частных лиц][free-individual] +- [FAQ по управлению аккаунтом][account-faq] +- [Резервирование имени приложения MSIX][reserve-name] +- [Управление резервированием имён][manage-names] +- [Создание заявки для приложения MSIX][create-submission] +- [Цены и доступность][price-availability] +- [Устранение ошибок отправки MSIX][submission-errors] +- [Подготовка к упаковке программы рабочего стола][prepare-package] +- [Правила Microsoft Store][policies] +- [Настройка платёжного и налогового профиля][payout-setup] +- [Выплаты по регионам][payout-regions] +- [Налоговые сведения][tax-info] +- [Налоговые обязанности][tax-details] +- [Соглашение разработчика приложений][developer-agreement] +- [API лицензий и покупок Windows.Services.Store][store-api] +- [Форма W-8BEN, IRS][w8ben] +- [Действующие налоговые соглашения США, IRS][irs-treaties] +- [Соглашение США — Казахстан, IRS][irs-kazakhstan] +- [Соглашение США — Россия и его приостановка, IRS][irs-russia] + +[open-account]: https://learn.microsoft.com/en-us/windows/apps/publish/partner-center/open-a-developer-account +[account-types]: https://learn.microsoft.com/en-us/windows/apps/publish/partner-center/partner-center-developer-account +[free-company]: https://learn.microsoft.com/en-us/windows/apps/publish/whats-new-company-developer +[free-individual]: https://learn.microsoft.com/en-us/windows/apps/publish/whats-new-individual-developer +[account-faq]: https://learn.microsoft.com/en-us/windows/apps/publish/faq/manage-your-account +[reserve-name]: https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/msix/reserve-your-apps-name +[manage-names]: https://learn.microsoft.com/en-us/windows/apps/publish/partner-center/msix/manage-app-name-reservations +[create-submission]: https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/msix/create-app-submission +[price-availability]: https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/msix/price-and-availability +[submission-errors]: https://learn.microsoft.com/en-us/windows/apps/publish/publish-your-app/msix/resolve-submission-errors +[prepare-package]: https://learn.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-prepare +[policies]: https://learn.microsoft.com/en-us/windows/apps/publish/store-policies +[payout-setup]: https://learn.microsoft.com/en-us/partner-center/account-settings/set-up-your-payout-account +[payout-regions]: https://learn.microsoft.com/en-us/partner-center/marketplace-offers/payment-thresholds-methods-timeframes +[tax-info]: https://learn.microsoft.com/en-us/partner-center/marketplace-offers/tax-information-for-commercial-marketplace +[tax-details]: https://learn.microsoft.com/en-us/partner-center/marketplace-offers/tax-details-marketplace +[developer-agreement]: https://learn.microsoft.com/en-us/legal/windows/agreements/app-developer-agreement +[store-api]: https://learn.microsoft.com/en-us/windows/uwp/monetize/in-app-purchases-and-trials +[w8ben]: https://www.irs.gov/forms-pubs/about-form-w-8-ben +[irs-treaties]: https://www.irs.gov/businesses/international-businesses/united-states-income-tax-treaties-a-to-z +[irs-kazakhstan]: https://www.irs.gov/businesses/international-businesses/kazakhstan-tax-treaty-documents +[irs-russia]: https://www.irs.gov/businesses/international-businesses/russia-tax-treaty-documents