2025, Sep 18 10:01
msstore publish в CI: как исправить could not find a project publisher
Как исправить ошибку msstore CLI в CI/CD: could not find a project publisher. Просто укажите абсолютный путь к MSIX и параметр -id при публикации в MS Store.
Публикация приложения на Python/Kivy в Microsoft Store из CI может споткнуться о тонкие нюансы. Типичная ситуация: утилита msstore CLI запускается нормально, распознаёт среду CI, но не может связать издателя с каталогом результатов сборки и останавливается с туманным сообщением. Ниже — краткий разбор сбоя и исправления, которое делает пайплайн зелёным.
Пример кода
Изначальный сценарий использует msstore reconfigure, после чего запускается publish, который пытается определить всё по текущему каталогу:
msstore reconfigure --tenantId {TENANT_ID} --clientId {CLIENT_ID} --clientSecret {CLIENT_SECRET} --sellerId {SELLER_ID}
msstore publish -v -i .
CLI запускается, обнаруживает, что работает в CI, и затем завершается со следующим сообщением:
We could not find a project publisher for the project at 'D:\a\app-language\app-language\windows\dist'.
Что на самом деле происходит
Инструмент не может определить издателя проекта, когда его указывают на каталог с результатами сборки. В этом сценарии вывод по каталогу не срабатывает, даже несмотря на то, что сессия CI корректно распознаётся. В итоге — жёсткая остановка прямо перед публикацией.
Решение
Перейдите от вывода по каталогу к явному артефакту. Укажите прямой путь к MSIX, который хотите опубликовать, и передайте идентификатор приложения:
msstore publish "{ABS_MSIX_PATH}" -v -id {STORE_APP_ID}
Так вы заменяете неоднозначную ссылку на каталог конкретным MSIX‑файлом и даёте CLI ровно то, что нужно для отправки пакета.
Почему это важно
В автоматизированных конвейерах неявное обнаружение легко ломается из‑за мелких отличий в раскладке или именовании артефактов. Явная ссылка на MSIX делает процесс детерминированным — именно это нужно для воспроизводимого CI/CD. CLI больше не приходится гадать, что лежит в папке dist: утилита просто берёт указанный пакет и публикует его под переданным id.
Практические выводы
Если msstore CLI пишет, что “could not find a project publisher” для вашего пути в dist, перестаньте полагаться на вывод по каталогу. Используйте абсолютный путь к MSIX и аргумент -id. Команду reconfigure оставьте для учётных данных и привязки продавца, а шагу publish передавайте конкретный пакет. Эта небольшая правка убирает догадки и исключает целый класс ошибок, связанных с путями, в CI.
Коротко: будьте конкретны с артефактом. Направляйте msstore publish на файл MSIX и указывайте id приложения. Этого достаточно, чтобы процесс проходил надёжно.