Microsoft před týdnem vydal nové sestavení Windows 10 (14316) a spolu s ním tzv. Desktop App Converter Preview (Project Centennial). Firma chce naplnit Windows Store aplikacemi, takže hledá způsoby, jak převést aplikace z jiných platforem. Projekt Islandwood slouží pro portování aplikací z iOS. Projekt Astoria měl totéž učinit s aplikacemi pro Android, ale Microsoft jeho vývoj nakonec zrušil. Web Bridge udělá univerzální aplikaci z webové. A nakonec projekt Centennial do Universal Windows Platform (UWP) převede tradiční desktopové programy Win32/.NET).
Díky
Centennialu už ve Windows Storu vyšly v minulém díle hry Tomb Raider a Gears
of War. Microsoft pak přímo na Buildu ukazoval, jak převést i další
software, například přehrávač VLC.
Žádný nepořádek na disku a v registru
Převod
přes zmíněný App Converter je hodně jednoduchý. Ve zkratce pouze vezme
stávající instalátor MSI a převede se do zvláštního instalátoru AapX. K
němu se vytvoří ještě soubor definující název, popisek, ikonku, asociace souborů atd.). Kód programu zůstane stejný, jeho binární podobu ostatně žádný
převodník nemůže nijak změnit.
Jak probíhá převod desktopového programu
Avšak už tento jednoduchý převod s
sebou nese důležitou výhodu. Windows 10 si s novým instalátorem pohlídá,
co program kde uloží a zapíše. Ve skutečnosti jej ani nenechá udělat
velké zásahy, všechny změny jsou provedeny pouze virtuálně pomocí
přesměrování. Převedený program si pouze bude myslet, že nahrál .dll
knihovny do složky Windows, zapsal data do registru, ale ve skutečnosti
budou data uložená jinde a na pravých místech budou vytvořeni jen
zástupci. A protože systém ví, do kterých složek se zapisovalo a co se v
registru upravilo, po odinstalaci se vrátí vše do původní podoby.
Aplikace po sobě nezanechá nepořádek.
Centralizované aktualizace i instalace mimo Windows Store
Distribuce
univerzálních aplikací se bude spoléhat především na Windows Store, není
to však povinnost. Vývojáři mohou dobrovolně nabízet AapX instalátory
na vlastním webu. Tam je mohou poskytnout zdarma či prodávat, aniž by se
dělili o provize s Microsoftem.
Systém umožní tzv. „sideloading“ podobně jako Android, který jej ale má ve výchozím nastavený vypnutý (tzv. instalace z neověřených zdrojů). Podmínkou Microsoftu je, aby aplikace byly digitálně podepsané některou z certifikačních autorit (např. Verisign). Tím alespoň trochu zajistí, že k softwaru nikdo další nepřibalí malware a jinou havěť.
Aplikace umístěné ve Windows Storu však budou mít tu výhodu, že se budou z jednoho místa aktualizovat. Stačí, aby tvůrci poslali do obchodu novou verzi. Uživatel nebude muset lovit nic na webu, Store se aktualizuje automaticky nebo zašle notifikaci, že je k dispozici nová verze.
Microsoft publikovaný software na svých serverech kontroluje, což by mělo zabránit podvodným nebo jinak škodlivým aplikacím, ale pětiletá praxe se Storem ve Windows Phonu 7.0 a novějších nám ukázala, že je to spíš jen teorie. Obchod je i tak plný aplikací, které tam nemají co dělat.
Je v zájmu vývojářů publikovat ve Windows Storu. Tam se uživatelé o jejich softwaru dozví snáze, odtamtud mohou z hodnocení a recenzí čerpat zpětnou vazbu pro budoucí vylepšování a opravy.
Postupný převod na skutečné UWP
Už v téhle fázi je převedený software velkým krokem dopředu, protože instalace nebude tolik invazivní. Microsoft ale samozřejmě nechce přejít jen na jinou formu distribuce softwaru, ale také udělat změny uvnitř samotných programů.
Jako první doporučuje přidat živé dlaždice a notifikace informující o tom, co se v aplikaci děje. Dále asociace souborů (ať jde nastavit, že soubor X otevře programy Y) a URI protokoly (ať například odkaz mailto: otevře konkrétní e-mailový klient). To je základ, který si nežádá moc práce navíc.
Dalším krokem je postupné doplnění UWP části programu. Vývojáři by využili další systémová API a přidali uživatelské rozhraní napsané jako XAML. To je značkovací jazyk určený pro nativní tvorbu UI v univerzálních aplikacích. V tomto kroku by software běžel ve dvou hlavních procesech. Desktopová část by se nelišila od dnešních Win32 programů, zato část App Container by pojala veškerý UWP kód a bežela by v izolovaném sandboxu, takže by nemohla ohrozit jiné programy ani systém. Kontejner i desktopový proces spolu obousměrně komunikují přes AppService.
Konečným, ale nikoliv nutným krokem, je přepsat do onoho kontejneru další části z desktopu, až by nakonec nezbyl žádný kód určený výhradně pro Win32. Pak by konečně původní desktopový software mohl běžet na všech zařízeních s Windows 10 (mobily, konzole, IoT).
Ne všechno bude UWP
Do této fáze se veškerý software rozhodně nedostane. Znamená to hodně lidské práce (a tedy financí) a často převod do jiných jazyků (UWP počítá s C++, C#, JS a VisualBasicem). Ne každý software může po přepsaní do plně univerzální aplikace fungovat.
Desktopové programy Microsoft označuje jako full trust. Jak už je jednou nainstalujete, mají plnou důvěru dělat si v systému, co chtějí. Vrtají se v registrech i systémových souborech (například CCleaner a jiné čističe), což znamená velké riziko. V plně UWP režimu by do takových míst neměly přístup, nemají k tomu ani potřebná API, takže by ani nemohly fungovat. CCleaner by zkrátka neměl co čistit. Virtualizační software, nástroje pro VPN apod. zasahují hluboko k hardwaru a instalují si vlastní ovladače. To by s UWP nešlo. Možná jen zatím, kdo ví.
Cílem je zbavit se ryze desktopového kódu
Avšak i první krok, převedení na nový instalátor AapX, by byl velkým skokem pro komfort uživatelů a bezpečnost systému. Pro vývojáře to znamená minimum práce, veškerý aplikační kód by mohli nadále vydávat i pro systémy starší než Windows 10, pouze by připravili dvě formy distribuce. Ostatně také Windows 10 o možnost klasickou instalaci Další-Souhlasím-Další-Další-Konec-Nazdar nepřijde. V tom je přístup Microsoftu sympatický. Nikomu nic nenutí, přechod bude průběžný. Jenže kvůli té liberálnosti bude také pomalý.
Pro příště bychom si ale měli my, vy i Microsoft ujasnit, co že to ta UWP aplikace je. V závislosti na tom, do kterého kroku se vývojáři dostanou, může jít o běžný desktopový program s jiným instalátorem, nebo o plně univerzální aplikaci využívající pouze systémová rozhraní a běžící na všech platformách s Windows 10. Ale o tom už byla řeč v pátek. Není univerzální jako univerzální.
Kompletní galerie