Кейс
Собственный проект · Приложение для Windows
AutoDark: переключение темы Windows с публикацией в Microsoft Store.
Автоматическое переключение светлого и тёмного режимов Windows 11 на рассвете и закате. Утилита с одной задачей и переключателем ВКЛ/ВЫКЛ, которую разработал Danilo Stoletovic и опубликовал в Microsoft Store.
Приложение
Проблема
Я годами хотел, чтобы Windows подстраивалась под световой день. Варианты, которые я пробовал, добавляли больше сложности и фоновой активности, чем мне было нужно. Простая функция Windows не должна требовать сложного софта. Мне нужен был переключатель, а не ещё одно хобби.
Решение
Я написал нативное приложение для Windows на .NET с минимальным интерфейсом ВКЛ/ВЫКЛ. AutoDark рассчитывает время рассвета и заката по данным геолокации Windows или введённым вручную координатам, включает светлый режим днём и тёмный ночью, а запуски по расписанию поручает Windows Task Scheduler. Закрытие окна завершает приложение; отключение автоматизации удаляет задачу и восстанавливает сохранённые настройки темы.
Не раздувать задачу
Узкая функциональность и низкое потребление ресурсов в фоне были заложены в требования к проекту. Здесь нет значка в трее или постоянно работающей службы: Windows запускает приложение ненадолго, когда это нужно. Без аккаунта, телеметрии и лабиринта настроек. Это архитектурные решения, а не результаты замеров производительности.
Пакет меняет правила
При интеграции с темами Windows пришлось учитывать поведение MSIX. Приложение без пакета вносит точечные изменения в реестр; текущая пакетная реализация применяет копию темы через Windows Theme Manager, меняя светлый и тёмный режимы, но не применяя обои, курсоры, значки и звуки. Этот интерфейс не документирован, поэтому совместимость нужно проверять, а не принимать на веру. Для запуска пакетного приложения по расписанию используется псевдоним запуска, не зависящий от версии, а не путь установки с номером версии.
Песочница сказала «нет»
Подача в магазин также потребовала разобраться с ограничениями возможностей приложения. Отклонённая возможность unvirtualizedResources была удалена. В отдельном эксперименте с AppContainer удалось запустить тестовую программу и инициализировать Theme Manager, но применение доступной для чтения темы из комплекта приложения было запрещено, а получить доступ к Task Scheduler не удалось. Это было исследование, а не функция песочницы, вошедшая в релиз. Текущий манифест релизной версии сохраняет runFullTrust для запуска в обычном пользовательском контексте настольной среды; повышения прав до администратора он не запрашивает. Эти локальные эксперименты не доказывают, что поведение будет одинаковым на всех сборках Windows, и не определяют точную версию пакета, которая сейчас представлена в магазине.
Выпуск — часть инженерной работы
Я настроил упаковку в MSIX и проверку с учётом идентификатора пакета приложения, версии, ресурсов и псевдонима запуска, подготовив пакет для ручной отправки через Partner Center. Данные для страницы в магазине, декларации конфиденциальности и возможностей, ограничения разрешений и проверки совместимости — всё это часть работы по выпуску. Одной успешной сборки мало, чтобы приложение попало к пользователям.
Результат
AutoDark — работающее приложение, доступное всем через Microsoft Store под именем издателя Danilo Stoletovic. В этом и состоит результат: настоящая утилита, которую можно установить через общедоступный канал распространения. Публикация в магазине — это способ распространения, а не знак одобрения Microsoft.
Кнопка была самой простой частью
За маленьким интерфейсом может скрываться серьёзная работа с платформой. Упаковка меняет поведение при запуске. Модель разрешений может заблокировать основную функцию. У распространения свои требования. Вывод: выпустить софт — значит обеспечить совместимость, собрать пакет и доставить его пользователям, а не просто написать код.
Проверь сам
Связанная услуга: Веб-приложения и ИИ-интеграции
Мой стек
За всё берусь. Ни в чём не мастер.
И всё равно довожу всю эту хрень до релиза