Предисловие
Ни для кого не секрет, что на смартфонах под управлением операционной системы Android можно клонировать приложения. Иногда этот функционал даже встроен в систему. Один из примеров тому – (не) всеми любимая MIUI, которая, начиная с двенадцатой версии, уже умела создавать дубликаты приложений.
Однако если речь идёт о Windows 10/11, то я не встречал решений для клонирования UWP-приложений. Давайте попробуем это исправить!
Подготовка
Итак, что же нам понадобится:
-
Прямые руки, немного терпения
-
Устройство под управлением Windows 10/11
-
Пакет SDK для Windows (доступен для загрузки здесь)
Если вы уверены, что всё, перечисленное выше, у вас имеется – можно двигаться дальше.
Приступим к действиям
Первым делом нам необходимо выбрать приложение, которые мы будем клонировать. В качестве подопытного я выбрал Unigram – клиент для мессенджера Telegram. Дальнейшие действия буду показывать на этом примере.
Открываем PowerShell от имени администратора. Вводим следующую команду:
Get-AppxPackage
Эта команда покажет нам список всех установленных приложений. Среди всего списка находим то, которое мы собираемся клонировать. Выглядит это примерно следующим образом:
Name : 38833FF26BA1D.UnigramPreview Publisher : CN=D89C87B4-2758-402A-8F40-3571D00882AB Architecture : X64 ResourceId : Version : 11.3.3.0 PackageFullName : 38833FF26BA1D.UnigramPreview_11.3.3.0_x64__g9c9v27vpyspw InstallLocation : C:\Program Files\WindowsApps\38833FF26BA1D.UnigramPreview_11.3.3.0_x64__g9c9v27vpyspw IsFramework : False PackageFamilyName : 38833FF26BA1D.UnigramPreview_g9c9v27vpyspw PublisherId : g9c9v27vpyspw IsResourcePackage : False IsBundle : False IsDevelopmentMode : False NonRemovable : False Dependencies : {Microsoft.UI.Xaml.2.8_8.2310.30001.0_x64__8wekyb3d8bbwe, Microsoft.NET.Native.Framework.2.2_2.2.29 512.0_x64__8wekyb3d8bbwe, Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe, Microsof t.VCLibs.140.00_14.0.33519.0_x64__8wekyb3d8bbwe...} IsPartiallyStaged : False SignatureKind : Store Status : Ok
Из всей этой кучи нам пригодится параметр Name. Запоминаем его.
Теперь экспортируем его куда-нибудь:
Get-AppxPackage -Name "ИМЯ_ПРИЛОЖЕНИЯ" | ForEach-Object { Copy-Item -Path $_.InstallLocation -Recurse -Destination "ПУТЬ\$($_.Name)" }
Имя приложения – это то самый параметр Name. Также необходимо указать путь, куда именно будет происходить экспорт.
В итоге у нас должно получиться что-то подобное:
Среди этой кучи файлов должен быть AppxManifest.xml. Нам необходимо немного его отредактировать. Открываем его и находим строчку Identity. Меняем значение Name и Publisher на свои. Вот как это получилось у меня:
<Identity Name="CLONE_Unigram" Publisher="CN=WHO_AM_I" Version="11.3.3.0" ProcessorArchitecture="x64" />
Теперь приступим к сборке appx-пакета. Открываем Developer Command Prompt for Visual Studio. Вводим следующее:
MakeAppx pack /d "ПУТЬ_ДО_ФАЙЛОВ_ЭКСПОРТА" /p "ПУТЬ_ГДЕ_БУДЕТ_ЛЕЖАТЬ_ПАКЕТ\Clone.appx"
Убеждаемся, что пакет успешно собрался:
И что, это всё? О нет, если вы попробуете установить его – вы столкнётесь с проблемой. Для UWP приложения по-хорошему нужен сертификат. Ну ладно — слепим его сами! В консоли PowerShell вводим следующее:
New-SelfSignedCertificate -Type Custom -Subject "CN=WHO_AM_I" -KeyUsage DigitalSignature -FriendlyName "MyAppCertificate" -CertStoreLocation "Cert:\CurrentUser\My" -KeyLength 2048
Теперь необходимо экспортировать полученный сертификат в формате .pfx. Для этого открываем certmgr.msc. Идём в Личное > Сертификаты и находим наш сертификат. Нажимаем на него правой кнопкой мыши, затем Все задачи > Экспорт.
Выбираем «Экспортировать закрытый ключ«. В процессе нужно будет ввести пароль. Вводим его и запоминаем. Далее по подсказкам. Сохраняем сертификат туда, где он не потеряется.
Сертификат на месте? Отлично! Подпишем пакет нашим сертификатом в консоли Developer Command Prompt for Visual Studio:
SignTool sign /fd SHA256 /a /f "ПУТЬ_К_СЕРТИФИКАТУ.pfx" /p "ПАРОЛЬ_СЕРТИФИКАТА" "ПУТЬ_ДО_APPX"
Далее – немного хитрости. ПКМ по нашему файлу appx > Цифровые подписи > В списке подписей выбираем нашу подпись > Сведения > Просмотр сертификата > Установить сертификат > Локальный компьютер > Поместить в следующее хранилище > Обзор > Устанавливаем его в Доверенные лица.
Открываем APPX. Нажимаем установить…
Ошибка об отсутствии сертификата ушла и приложение успешно установилось. Мы счастливы. Открываем меню Пуск и в списке приложений нас встречают два приложения:
И да, наш клон успешно открывается и функционирует:
Что ещё?
Об этом я забыл упомянуть. Наверное по хорошему в манифесте можно поменять его имя. И вообще в ресурсах поменять иконку чтобы различать оригинал и копию. Я надеюсь, это не будет проблемой для вас.
ссылка на оригинал статьи https://habr.com/ru/articles/859762/
Добавить комментарий