PocketPC & Linux

Instalace Pocket PC softwaru pod Linuxem

Každý linuxák, co používá nějaké to přenosné zařízení s Microsoftím systémem (třeba Windows Mobile) se asi setkal s problémem instalace nového softwaru na toto PDA, protože většina instalátorů využívá ryze MSoftí ActiveSync.

<em>(I takhle může vypadat váš kapesní gadget)</em>

Ačkoli já osobně podobné zařízení zatím nevlastním (a ani o jeho koupi neuvažuji), byl jsem před podobný problém postaven. A věřte, že nikdo nedovede být neodbytnější než můj brácha, když mu něco nejde ;D

Ve Windows se mobilní software běžně instaluje do složky ActiveSyncu (což je program sloužící pro synchronizaci PDA/MDA a instalaci softwareu), bohužel tento software má v sobě samozřejmě speciální USB ovladače pro každý kus hardwareu, které samozřejmě bohužel (naštěstí) nelze na Linuxu provozovat. Když už jsem zmínil synchronizaci, tak na Linuxu je spousta prográmků (SynCE, MultiSync,…), které tohle umí a taky jsou toho plná fóra, proto se tím tady nezabývám. <h2>Mít či nemít ActiveSync?</h2> Moc dlouho jsem neuvažoval, než jsem vymyslel řešení. Nainstalovat software v emulátoru, vzít si z cílové instalační složky soubory .cab (ty se už dají instalovat v PDA i bez účasti počítače, tj. z karty - pouhým kliknutím). To bohužel není tak snadné kvůli nezasvěcenosti výrobců mobilního softwareu, který vyžaduje ActiveSync (BTW chci vidět jak to bude vypadat v současnosti na Windows Vista, které používají vlastní správu mobilních aplikací). Kdyby se instalátory neomezovali na uživatele ActiveSyncu, bylo by mnohem snažší tento software instalovat a to nejen pro Linuxáky, ale i pro ty, kteří nepoužívají PDA jako organizér a nepotřebují tudíž používat ActiveSync pro synchronizaci. Apeluji tedy na výrobce mobilního softwaru: "Prosím! Dávejte nám k dispozici CABky!".

MSI Balíčky na Linuxu - GRRR!

Ale abych se vrátil k původnímu problému. Vygoogloval jsem si poslední verzi ActiveSyncu a stáhnul ze stránek Microsoftu. Hmm super zase nepřekonatelnej balíčkovací systém Microsoftu - tj. MSI (možná mu křivdím, jsou totiž úkony - jako hromadná vzdálená instalace na uživatelské stanice se systémem Windows - přičemž instalátor si uděláte sami). Dalším requestem na google jsem zjistil, že to de přes wine pomocí utility msiexec:

harvie@harvie-ntb:~$ msiexec
Usage:
Install a product:
msiexec {package|productcode} [property]
msiexec /i {package|productcode} [property]
msiexec /a package [property]
Repair an installation:
msiexec /f[p|o|e|d|c|a|u|m|s|v] {package|productcode}
Uninstall a product:
msiexec /x {package|productcode} [property]
Advertise a product:
msiexec /j[u|m] package [/t transform] [/g languageid]
msiexec {u|m} package [/t transform] [/g languageid]
Apply a patch:
msiexec /p patchpackage [property]
msiexec /p patchpackage /a package [property]
Modifiers for above operations:
msiexec /l[*][i|w|e|a|r|u|c|m|o|p|v|][+|!] logfile
msiexec /q{|n|b|r|f|n+|b+|b-}
Register a module:
msiexec /y module
Unregister a module:
msiexec /z module
Display usage and copyright:
msiexec {/h|/?}
NOTE: Product code on commandline unimplemented as of yet

Copyright 2004 Vincent Baron Wine failed with return code 1

Takže instalujeme

harvie@harvie-ntb:~$ cd Downloads/
harvie@harvie-ntb:~/Downloads$ msiexec /i activesync_setup.msi
fixme:actctx:QueryActCtxW 80000010 0x10018000 (nil) 1 0x7e1bd278 8 (nil)
fixme:wtsapi:WTSQuerySessionInformationA Stub (nil) 0xffffffff 5 0x7e1bd514 0x7e1bd510
fixme:wtsapi:WTSFreeMemory Stub (nil)
fixme:msi:ACTION_HandleStandardAction unhandled standard action L"ValidateProductID"
err:msi:deformat_environment Unknown environment variable L"ALLUSERSPROFILE"
...zkráceno...

Asi uprostřed instalace se instalátor zastavil s tím, že se mu nedaří zavést již zmíněné USB drivery… To ovšem nevadilo, protože se zachoval čestně a neprojevil žádnou hack-o-fobii a neodinstaloval alespoň ten kousek záznamů v registrech a těch pár souborů:

Heuréka

harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync$ ls
2bp.dll astu.exe bmp.dll CEAPPMGR.EXE cefstore.dll certauth.dll Drivers dtptdns.dll eula.rtf FormInst.exe httpsrv.dll httpsys.dll INetRepl.dll inkeng.dll InkReg.dll inkres.dll InkStore.dll InkSync.dll MailSync.dll MediaSync.dll minshell.dll mobenc.ico mobile.lnk office.dll olregdll.dll outstore.dll pegconn.wav pegconv.dll pegdisc.wav pwdcnv.dll pwdreg.dll pwiofcnv.dll pwireg.dll pwoffcnv.dll pxl2xls.dll pxlcnv.dll pxlfile.dll rapimgr.exe rapiproxystub.dll rapistub.dll readme.doc richink.dll riresdll.dll SQLDB20.dll SQLQP20.dll SQLSE20.dll synceng.dll SyncStat.dll tcp2udp.dll wcescomm.exe WCESMgr.exe Wcesview.dll WMP10_Update.exe xls2pxl.dll

A to všechno kupodivu (*JOKINGLY*) stačilo k tomu, aby se instalátory nevzpouzeli nainstalovat co bylo potřeba k vyextrahování CABů:

harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync$ cd ICQ/
harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync/ICQ$ ls
icq.ico icq.ini ICQppc.PPC300_ARM.cab ICQppc.PPC300_MIPS.cab ICQppc.PPC300_SH3.cab INSTALL.LOG LA.txt
harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync/ICQ$ cd ../TCPMP/
harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync/TCPMP$ ls
tcpmp.arm720_ce3.cab tcpmp.arm_ce2.cab tcpmp.arm_ce3.cab tcpmp.ini tcpmp.mips_ce2.cab tcpmp.mips_ce3.cab tcpmp.sh3_ce2.cab tcpmp.sh3_ce3.cab Uninstall.exe
harvie@harvie-ntb:~/.wine/drive_c/Program Files/Microsoft ActiveSync/TCPMP$

Potom jsem si už jen pomocí svého oblíbeného filemanageru nahrál všechny CABy na paměťovou kartu SD a ťuknul na ně v PDAčku a za 2 sekundy už bylo vše nainstalováno.

Závěr

Určitě by bylo ideální, kdyby se software pro mobilní zařízení šířil hlavně ve formě CAB souborů, které by jistě nikoho neurazili a nikomu nezpůsobili problém ve chvíli, kdy se MS prostě rozhodne stáhnout ActiveSync z oběhu (třeba kvůli tlačení lidí do Windows Vista, apod…). Další řešení může být balíček, který by na Linuxu ActiveSync pouze předstíral. A stejně tak by se mi hodily programy, které budou schopné rozbalovat všechny možné typy instalátorů (super hack-o-vátko).

Najvíce hardcore řešením je samozřejmě nějakým způsobem do PDA nainstalovat Linux, na to si ale osobně netroufám, ale doufám, že budoucí PDA/Mobily budou mít tuto volbu zjednodušenou v podobě podpory výrobcem. Zatím se alespoň můžete podívat na <a href="http://linuxdevices.com/">linuxdevices.com</a> a podobné.

Doufám, že vám článek pomohl a hodně štěstí při instalaci nového softwareu!