"Новый формат приложений Windows Store распространяется в установочных файлах .Appx и .AppxBundle, которые содержат только программу, название и описание. Эти пакеты не позволяют разработчикам использовать для установки собственную программу установки, как это происходит в случае с устаревшим программным обеспечением." — Microsoft.
Обойдите повествование.
Если вам нужны инструкции по созданию программы установки, перейдите прямо к разделу ‘Create an .exe installer for UWP’.
Прекрасно, но что, если вы хотите предложить криворукому новорожденному нежелательную программу из Microsoft Store другу, не проведя всей проверки? Или ваш друг не знает, как активировать режим разработчика и установить сертификат. Именно здесь возникают трудности, которые приходится преодолевать, и сегодня я расскажу вам о самой интересной из них! При замене программы мы не получаем exe, который позволяет играть и наслаждаться жизнью. UWP имеет множество подобных уловок и ограничений. Это и недостатки (безопасность, собеседник), и недостатки (например, вы не можете хранить информацию о программе на локальной машине). Я еще не раз расскажу обо всех недостатках и преимуществах технологии, но на этот раз начну рассказ со знакомства с UWP.
Знакомство с UWP
Однажды, на втором уроке в университете, мне удалось отличиться, и мой профессор заметил меня.
— Здравствуйте, можете ли вы помочь мне с моей работой?
— Отлично! Вам нужно создать свой собственный мессенджер. Начните с выбора технологии.
В этот момент кто-то предложил Windows Forms (для невмешательства), WPF (для большего количества функций). Нет даже слова для UWP. В то время мне нравилось видеть новости о UWP и обновлениях Windows. Я был поражен, насколько легко создавать красивые приложения с готовым дизайном. А плитка… О, это была моя первая любовь в мире ИТ. Поэтому я начал бить кулаком в грудь, усиленно защищать эту технологию и продвигать ее в массы. Мой тренер поддержал меня и сказал: "Ну, давай я покажу тебе, что значит новая технология". Возникли проблемы с распространением приложения, поскольку оно работало только на компьютерах с Windows 10, но эта проблема была решена с помощью новых материалов из университета.
После месяца роста Messenger был готов к работе, и я мог не любить UWP, потому что это могло привести к ошибкам, таким как C ++ не приближается. Ведь это было совсем другое — видеть, как кто-то другой самостоятельно пишет и кодирует код, и я разработал клиент Messenger практически в одиночку, чтобы передать всю работу Олегу (моему однокласснику). Однако пришло время сдавать проект, и отправлять его редактирование на другой компьютер в .exe оказалось слабым делом.
Создание .exe установщика для UWP
Поскольку окончательный код был в моих руках, мне оставалось только создать программу установки для распространения приложения. Просмотрев интернет, я понял две вещи: …
Microsoft хочет, чтобы деньги и приложения уходили в ее магазины со всевозможными приспособлениями и учетными записями разработчиков.
Существует корпоративный способ сделать это, но вы должны использовать PowerShell, чтобы перейти к настройкам и включить режим разработчика.
Способ 2 кажется правильным, но это не программа установки. Вам нужно куда-то идти и что-то менять в себе. И вы, наверное, уже понимаете, что нам нужно все автоматизировать. Программа ‘InnoSetupCompiler’ помогает в этом. Используйте его для создания автоматического установщика для вашего UWP-приложения. В этот момент профессор объяснил мне, что новая технология не всегда лучше, что иногда удобнее использовать старую технологию и что "особенности", если они реализованы неестественно, не привлекут разработчиков. Поэтому он намеренно позволил нам использовать UWP для работы с ним и разобраться во всем самостоятельно. Мы пропустили срок, но работа по созданию инсталлятора была выполнена и должна была быть выполнена.
Подготовка к созданию установщика
После завершения сборки приложения настройте package.appxmanifest в соответствии с вашими потребностями, щелкните правой кнопкой мыши на проекте и выберите Publish → Create application package. Теперь выберите Download unpublished application (отключите флажок auto-update) → Yes, use current certificate → Введите версию, выберите архитектуру и сборку. Затем перейдите в папку проекта и найдите там папку AppPackages→ с названием приложения.
Вы увидите различные файлы. Файл с расширением .msixbundle — это новая программа установки. Install.ps1 и Add-AppDevPackage.ps1 — это сценарии для Windows, которые следует использовать. Вы можете поместить их в программу установки в любом случае, но код этих скриптов будет содержать сообщение "Install: yes? Нет?" со специальным блоком, отвечающим за контекстное меню. Конечно, нам это не нравится, поэтому мы их удаляем. Я загрузил пример кода на GitHub. +Добавьте несколько строк для включения неполного режима разработчика. Как вы можете видеть, в настройках Windows было три режима: безопасный режим, установка UWP-приложений из неизвестных источников и режим разработчика. Поэтому используйте эту половину режима разработчика, которая в настоящее время нигде не отображается.
Следующим шагом будет создание скрипта в InnoSetup. Для наглядности мы создадим самый простой сценарий. В блоке Run напишите следующее.
Имя файла: "powershell.exe"? Глагол: runas;
Параметры: "-ExecutionPolicy Bypass -File" " Install.ps1" ";
WorkingDir:; Флаг: runhidden shellexec
(глагол: runas — приложение с правами администратора).
Таким образом, был установлен частичный режим разработчика и сертификат (путем выполнения команд Windows с помощью PowerShell). Это означает, что все требования официального установщика Windows.msixbundle выполнены. Далее происходит установка модифицированного приложения, но все блоки не отмечены надписью "Установить, да? Нет?" приводят к тому, что пользователь не видит интерфейс. Перерыв.
Параметры: "Add-AppxPackage" " CLient_CS_UWP_0.5.1.0_x86_x64_Debug.msixbundle" ";
WorkingDir:; Флаг: runhidden
Полный код примера можно найти на GitHub.
После всех этих действий скомпилируйте полученный скрипт и получите файл UWP-приложения installer.exe.
В завершении
В UWP есть много интересных особенностей, но я все равно люблю его. Он прекрасен и отвратителен сам по себе и заставляет меня испытывать самые разные эмоции во время разработки. Есть два ответа на вопрос, почему в этих приложениях нет .exe. Первый ответ заключается в том, что они используют безопасные расширения, а все файлы хранятся в специальной закрытой папке, поэтому вам не нужно беспокоиться о кроссплатформенности. Второй ответ: деньги. И хотя мы можем долго спорить о том, как сильно Microsoft любит деньги … Мир меняется, и Microsoft Store становится бесплатным и доступным для всех. Одним словом, у UWP большое и светлое будущее.