Delphi a Windows Desktop App Converter

vložil Radek Červinka 21. prosince 2016 00:38

Integrace podpory Windows Desktop Bridge

Název Desktop Bridge je poměrně nový, dřív nesl tento projekt název Centennial. Jde o jeden z projektů MS, které měly přivést pod křídla UWP (Universal Windows Platform) aplikace z jiných ekosystémů. Původně existovaly tři zásadní projekty pro převod z Win32, Android a iOS ale v průběhu času byl projekt pro převod Android aplikací ukončen. Aktuálně jsou tedy k dispozici dva hlavní (dle mého soudu) nástroje pro převod aplikací z iOS (iOS Bridge) a Windows (Desktop Bridge). Doplňují je nástroje pro převod mobilních aplikací v Silverlight z Windows Mobile 8.1 (Mobilize.Net’s Silverlight Bridge) a pro převod webových aplikací (Hosted Web Apps). Pokud vás zajímají podrobnosti nahlédněte přímo na stránky MS: developer.microsoft.com/en-us/windows/bridges.

Nás pochopitelně zásadně zajímá Desktop Bridge a protože byl uvolněn pro veřejnost v rámci Windows 10 Anniversary Update v srpnu letošního roku, můžeme ho začít využívat hned teď.

Existují dvě možnosti, jak z klasické Win32 aplikace vyrobit APPX balíček:

  • Automatická konverze z instalačního balíčku (EXE nebo MSI)
  • Ruční konverze EXE souboru aplikace.

V prvním případě jde o nástroj DesktopAppConverter.exe. Používá se v případě, že máme k dispozici instalátor aplikace (EXE nebo MSI) a v podstatě nejprve vytvoří virtuální instanci Windows 10, ve kterých pak následně spustí instalátor. Průběh instalace a její výsledek zaznamená a vytvoří APPX, který obsahuje obraz výsledku instalace. Po nainstalování vytvořeného APPX má zapouzdřený EXE k dispozici vlastní kopii registrů a souborů vytvořených či změněných v rámci sledované instalace při konverzi. Vše je oddělené od okolí sandboxem, ve kterém pak výsledná aplikace běží.

Jestliže již používáte nějaký nástroj typu InstallAware nebo InstallShield pro vytvoření instalačního balíčku, můžete tento způsob zkusit, pokud poběží vše bez problémů je nejjednodušší a nejméně pracná cesta.

Ve druhém případě jde o nástroj MakeAppx.exe (a SignTool), jejichž integrace je právě předmětem podpory Desktop Bridge v Delphi 10.1 Berlin Update 2.

V tomto scénáři v podstatě vytváříme přímo instalační balíček. MakeAppx má několik možných variant použití, přičemž nejběžnější je asi varianta použití seznamu souborů, které má APPX balíček obsahovat. Kromě EXE souboru Win32 aplikace musí obsahovat konfigurační soubor aplikace (AppxManifest.xml) a ikony v několika velikostech. Doplňkově může obsahovat jakékoliv další soubory, které aplikace pro svoji činnost potřebuje.

Integrace v Delphi není nijak složitá a i bez ní byste váš EXE dokázali pomocí nástrojů ve Windows SDK 10 úspěšně přetavit do APPX formátu. Nicméně byste museli prostudovat dokumentaci, vytvořit ručně potřebné konfigurační soubory a pak vše spojit dohromady a podepsat. Pokud vás zajímá co vlastně podpora v IDE za vás dělá, podívejte se sem msdn.microsoft.com/windows/uwp/porting/desktop-to-uwp-manual-conversion.

Pokud si ale chcete užívat komfortu IDE, vypadá to následovně:

IDE

Obdobně jako u ostatních platforem, které podporují ekosystémové obchody s aplikacemi se i ve Windows objevila možnost konfigurace pro Application Store. V konfiguraci projektu je nutné vyplnit Provisioning informace:

IDE

Pro ty z vás, kdo používají IDE pro publikování appek do ekosystémů Android či iOS to není nic překvapivého nebo nového, ale kdo zatím vyvíjel jen pro desktopové Windows je to nový svět, který bude muset teprve objevit.

Pro distribuci aplikace vlastními silami je především je potřeba certifikát pro podepisování aplikací. IDE umožňuje vytvořit takový soukromý certifikát zdarma volbou Create self-signed certifikate. Takový certifikát však není důvěryhodný a pokud bude někdo chtít nainstalovat váš APPX balíček, bude muset nejprve nainstalovat vámi vytvořenou certifikační autoritu do svých Windows a určit že je důvěryhodná.

Korektním řešením je zakoupení důvěryhodného podpisového certifikátu, který umožní aby bylo možné váš APPX balíček bez dalších kroků snadno nainstalovat. Není to úplně nejlevnější záležitost, cena podpisového certifikátu od Thawte je okolo 4500 Kč (na rok).

Pokud budete chtít umístit vaši aplikaci na Windows Store, certifikát nepotřebujete, podepsání balíčku zajistí Store v průběhu publikování. Informace v sekci Store je pak třeba vyplnit dle informací v profilu aplikace ve vývojářské konzoli (App management - App identity):

IDE

Názvy polí v Delphi a u MS se v zásadě shodují :).

Kromě Provisioning informací byla ještě doplněna sekce Application:

IDE

Je třeba doplnit dvě velikosti loga aplikace a určit jakým způsobem se bude generovat konfigurační soubor (Manifest). Pro jednoduché případy stačí automaticky vygenerovaný (vychází z doporučované předlohy). Pokud máte složitější nároky, můžete si manifest vytvořit sami a IDE jen určit že ho má použít.

Důležité je i to, že pro Windows v konfiguraci pro Store je nyní k dispozici Deployment konfigurace:

IDE

Delphi do ní standardně umístí EXE výstup projektu, požadované obrázky ikon a manifest. Ovšem můžete zde přidat ručně i jakékoliv jiné soubory, nebo je prostě přidat do projektu a Delphi je do deploymentu zařadí automaticky.

Pokud máte na cílové platformě Windows aktivní konfiguraci Application Store, objeví se v nabídce Project volba Deploy. Opět, kdo vyvíjí multiplatformní aplikace pro Android a iOS používá tenhle příkaz zcela běžně pro přípravu souborů, které se pak publikují na Google Play a Apple App Store. Zde je tomu zcela obdobně, Delphi shromáždí všechny soubory uvedené v Deployment konfiguraci, zabalí je do APPX a ten podepíše certifikátem.

Dobrá, máme APPX a co s ním? A vlastně, proč nezůstat u starého dobrého Win32 EXE a zabývat se novotou čpící APPX:

Zpřístupnění ekosystému Windows Store

Je to velmi lákavá představa, mít k dispozici možnosti, na které jsme u mobilních ekosystémů zvyklí a přijímáme je jako samozřejmost. Netřeba řešit distribuční cestu, mechanismus aktualizací, zajištění plateb, jistotu původu… Dlužno poznamenat, že aktuálně je publikování APPX vytvořených pomocí Desktop Bridge není explicitně povoleno pro všechny vývojové účty, ale je potřeba o to požádat přes on-line formulář. Zřejmě MS zatím testuje s jakou kvalitou převedených aplikací bude mít co do činění a jak na to bude reagovat Store a jeho uživatelé. Z toho také vyplývá, že nejsou pevně daná pravidla a přístup na Store není zaručený. Lze snad doufat, že to bude jen přechodný stav.

Snadná instalace/odinstalace a chování

APPX je vlastně instalační balíček, který můžete distribuovat i samostatně bez Store (je zajímavé, že poštovní klient tvrdošíjně odmítající EXE soubory, mi APPX v příloze slupnul jak malinu). Windows 10 ho umí nainstalovat a odinstalovat. Zobrazí ho v seznamu aplikací, je možné dlaždici aplikace připnout na Start a na hlavní panel. Tohle jistě zvládnou i instalační aplikace typu InstallAware, ale investice do nich nemusí být zrovna malá (ať už finanční, nebo časová pro osvojení si patřičného know-how). Také pravděpodobně půjde využít UWP API pro ovládání aktivních dlaždic, push-notifikací (Windows Push Notification), komunikaci mezi UWP aplikacemi (App Services), nebo dalších funkcí vázaných na UWP.

Jeden ze zásadních protiargumentů je nabíledni - Windows 10 jsou zatím v menšině a jestliže se tedy stejně musím zabývat EXE, které fungují ve W10 stejně, tak proč ztrácet čas i energii s APPX? Dle mého soudu jde o dva faktory. Jednak je to image produktu - UWP balíček prostě vypadá jako že do W10 patří. Naznačuje, že výrobce jde s dobou, sleduje poslední trendy. UWP je zkrátka sexy :). Druhý faktor je tempo penetrace W10 a záměry MS s nimi. Odhady do konce roku mluví o 33% podílu W10 (vztaženo ke všem používaným verzím Windows) a 400+ milionů instalací - zajímavý online-přehled zastoupení windows naleznete zde www.gosquared.com/global/windows/10/#launch.

Přestože MS přiznává, že tempo je nižší než předpokládal jejich plán (miliarda instalací do konce roku 2018) a to zejména kvůli fiasku mobilních telefonů s W10, odhady pro konec roku 2018 mluví o 700+ milionů instalací. A MS se vyjádřil v tom smyslu, že připravuje další kroky k tomu, aby podpořil tempo přechodu na W10. Oni zřejmě vážně chtějí, aby všichni na nich co nejdřív skončili a důvody se dají vcelku dobře pochopit.

Na závěr bych ještě rád popsal osobní zkušenost s umístěním APPX do Windows Store. K tomu je nutné mít svůj MS účet spojený s vývojovým, který lze získat za jednorázový poplatek $19 pro jednotlivce a $99 pro firmy. Dále je nutné si podat žádost o povolení publikovat konvertované Win32 na speciálním formuláři: developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge.

Učinil jsem tak a za nějaký čas (ani ne týden) se mi ozval přímo živý člověk (tedy alespoň doufám, jinak mají tedy pekelnou AI) a informoval mě o dalším postupu - zřídil mi přístup na portál pro sdílení souborů a požádal mě, abych tam umístil jak výchozí EXE aplikaci, tak výsledný APPX balíček. Postupoval jsem dle instrukcí a pár dní jsme si vyměňovali mejly na téma, jak že to myslím že mám v manifestu podporovaný jazyk us-en ale celá aplikace je v češtine a podobně :) - ano, chtělo to přepnout v IDE v projektu jazyk aplikace.

Z komunikace vyplývá, že to co jsem poslal si opravdu nějaký živý člověk spustil a sledoval co to dělá. Součástí procesu je signování doplňkové smlouvy, která má vývojáři zabránit v rošťárnách typu šíření nelicencovaných modulů třetích stran přes Store a podobně. Připadalo mi to vcelku jasné a když to srovnám s tím, co jsem musel podepsat Applu, abych mohl použít App Store, bez zábran jsem smlouvu signoval. Za pár dní jí kontrasignoval i někdo od MS a pak jsem pár sní čekal, až bude celý projekt předán na approval team k dořešení. Celkem brzy se ve vývojářském profilu objevila doplňková smlouva Centennial Early Adopter Program Addendum:

IDE

Tu bylo nutné ještě na účtu potvrdit a pak už bylo možné založit submission a odeslat APPX ke zpracování.

Vývojový účet, který má povoleno danou zkonvertovanou aplikaci umístit na Store, nemusí zřejmě u dané aplikace splňovat všechna kritéria, které jsou jinak u čistokrevné UWP aplikace vyžadována. APPX z Delphi rozhodně neprojde kontrolní utilitkou, která je součástí SDK, to však nebrání jejímu umístění na Store v rámci Centennial.

Po úspěšném vytvoření žádosti o umístění (Submission 1 je aktuálně přístupná aplikace na Store, Submission 2 je požadavek na aktualizaci):

IDE

se spustí proces, který může trvat dle popisu až tři dny:

IDE

V mém případě to bylo asi do dvou dnů a pak ještě několik hodin (nebylo to 16) pro zobrazení aplikace ve Store. Na výsledek se můžete ve Windows Store podívat zde:

www.microsoft.com/store/apps/9nblggh3zg3d

Helios Zoom je rozhodně netriviální klient pro ERP Helios Orange, má okolo 24 000 řádek a používá například komponenty z INDY a System.Net a zapisuje data do složky Dokumenty uživatele.

Mohu tedy z vlastní zkušenosti potvrdit, že není velký problém umístit na Windows Store reálnou aplikaci vytvořenou v Delphi a nezabere to zase až tolik času. Jakmile jsou zprocesované nezbytné formální náležitosti, je pak už možné dále aktualizovat aplikaci standardním postupem.

Dlužno dodat, že fázi postupu, ve kterém posuzuje aplikaci zástupce MS je třeba zopakovat pro každou novou aplikaci (umístit EXE a APPX na přidělený portál pro sdílení souborů).

Daniel Jenne, Praha, prosinec 2016

Tagy:

Novinky v Delphi | Praxe

Komentáře

21.12.2016 10:46:48 #

Marek Weyda

Super článek, děkuji !

Marek Weyda

22.12.2016 19:00:22 #

Tom

Velmi tomu nerozumiem. Ked mam svoju aplikaciu, ktora sa instaluje klasicky (Inno Setup installer - setup.exe), tak vlastne tento .appx robi to iste?
Cize nakopiruje aplikaciu .exe, kniznice .dll, zaregistruje .ocx subory a fonty a zapise nastavenia do registrov?

Alebo to je len na jednoduche samostatne aplikacie .exe?

Tom

28.12.2016 14:19:02 #

Daniel Jenne

Konverzní program DesktopAppConverter, který je součástí SDK umí převést instalátor do APPX formátu. Z hlediska instalace je vlastně APPX obdoba MSI. Funguje to tak, že DesktopAppConverter spustí instalátor ve virtuálním prostředí, provede instalaci a zaznamenává všechny provedené změny. Ty potom výsledný APPX při instalaci provede také, ovšem jen v lokálních kopiích sandboxu kde potom nainstalovaný APPX běží.

Samozřejmě je možné i sestavit si potřebné konfigurační a jiné soubory samostatně a APPX pak vytvořit pomocí MakeAppx.

Domnívám se, že jeden z důvodů proč celý projekt Centennial trval tak dlouho byl právě záměr vytvořit možnost převést hotovou EXE instalaci jednoduchým krokem do APPX bez nutnosti složité konverze a úprav v originálním projektu.

Daniel Jenne

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců