Compact Framework 2.0 na paměťové kartě

Windows Mobile – Smartphone
Standardní instalace .NET Compact Frameworku 2.0 (dále jen CF2), který je nezbytný pro běh některých aplikací, instaluje všechny soubory do hlavní paměti zařízení a nikoliv na paměťovou kartu, a to i tehdy, když takovou instalaci zvolíte na začátku instalace. To samozřejmě užere solidní část volné paměti cca. 5MB, kterou bychom jinak mohli využít jinak, že. Na několika zahraničních webech jsem našel i informace o tom, že explicitní přemístění na kartu není možné, že nefunguje nebo že se opět soubory časem “přestěhují” zpět do hlavní paměti. Já sám jej mám již drahnou dobu na kartě a žádné popisované problémy zatím nenastaly. Přináším vám tedy návod, jak ušetřit pár MB a přesunout vše na paměťovou kartu. Jen mějte na paměti, že vše provádíte na vlastní riziko, že zasahujete do systemových oblastí vašeho zařízení. Proto vyloženě doporučuju minimálně zálohovat registry a nic neuspěchat. Takže jdeme na to !

1. Příprava
• CF2 musí být nainstalován před provedením těchto úprav (nejlépe standardně, do paměti zařízení)
• měli byste mít nějakou aplikaci, jež CF2 používá, abyste to po úpravách otestovali (nejlépe před a po úpravě)
• bezpodmínečně ukončete všechny aplikace, které CF2 využívají
• použijte nějaký editor registru např. desktopový “Mobile Registry Editor”

2. Adresáře
• měli byste mít prázdný adresář “.net cf 2.0” v adresáři “Program Files” ve vašem zařízení
• vytvořte stejný adresář tj. “.net cf 2.0” na kartě čili:
“\Storage Card\Program Files” -> “.net cf 2.0”
Pozn. adresář zůstává stále prázdný – takže to možná není nutné, ale pro jistotu to udělejte
• pokud nemáte, vytvořte adresář “Windows” na kartě, čili: “\Storage Card\Windows”

3. Přesun souborů na kartu
Následující soubory mohou být přesunuty z adresáře “\Windows” vašeho zařízení na kartu
tj. do: “\Storage Card\Windows”

GAC_CustomMarshalers_v2_0_0_0_cneutral_1.dll
GAC_Microsoft.VisualBasic_v8_0_0_0_cneutral_1.dll
GAC_Microsoft.WindowsCE.Forms_v2_0_0_0_cneutral_1.dll
GAC_Microsoft.WindowsMobile.DirectX_v2_0_0_0_cneutral_1.dll
GAC_mscorlib_v2_0_0_0_cneutral_1.dll
GAC_System.Data.SqlServerCe_v3_0_3600_0_cneutral_1.dll
GAC_System.Data_v2_0_0_0_cneutral_1.dll
GAC_System.Drawing_v2_0_0_0_cneutral_1.dll
GAC_System.Messaging_v2_0_0_0_cneutral_1.dll
GAC_System.Net.IrDA_v2_0_0_0_cneutral_1.dll
GAC_System.Web.Services_v2_0_0_0_cneutral_1.dll
GAC_System.Windows.Forms.DataGrid_v2_0_0_0_cneutral_1.dll
GAC_System.Windows.Forms_v2_0_0_0_cneutral_1.dll
GAC_System.Xml_v2_0_0_0_cneutral_1.dll
GAC_System_v2_0_0_0_cneutral_1.dll
MSCOREE2_0.dll
netcfagl2_0.dll
netcfd3dm2_0.dll

4. Úprava Global-assemblies-cache (GAC)
• V adresáři “\Windows” se nachází soubor “Microsoft .NET CF 2.0.GAC” – nepřesunujte !
• Otevřete a upravte tento soubor v nějakém textovém editoru (např. UltraEdit)
• Zazálohujte si originální soubor .GAC před modifikací !!!
• Buďte opatrní ! První 3 bajty jsou nějaké “zmatené” znaky a ty musí být zachovány, ty nesmíte změnit !
• upravte originální soubor, řádek po řádku, a nahraďte na každém řádku následujícím způsobem:
“\Program Files\.NET CF 2.0\system.dll” je nahrazen za
“\Storage Card\Program Files\.NET CF 2.0\system.dll” a tak dále …

Zde je obsah upraveného souboru “\Windows\Microsoft .NET CF 2.0.GAC” jako příklad:
\Storage Card\Program Files\.NET CF 2.0\mscorlib.dll
\Storage Card\Program Files\.NET CF 2.0\system.dll
\Storage Card\Program Files\.NET CF 2.0\system.drawing.dll
\Storage Card\Program Files\.NET CF 2.0\system.messaging.dll
\Storage Card\Program Files\.NET CF 2.0\system.web.services.dll
\Storage Card\Program Files\.NET CF 2.0\system.windows.forms.dll
\Storage Card\Program Files\.NET CF 2.0\system.windows.forms.datagrid.dll
\Storage Card\Program Files\.NET CF 2.0\system.xml.dll
\Storage Card\Program Files\.NET CF 2.0\system.net.irda.dll
\Storage Card\Program Files\.NET CF 2.0\system.data.dll
\Storage Card\Program Files\.NET CF 2.0\microsoft.visualbasic.dll
\Storage Card\Program Files\.NET CF 2.0\microsoft.windowsce.forms.dll
\Storage Card\Program Files\.NET CF 2.0\Microsoft.WindowsMobile.DirectX.dll
\Storage Card\Program Files\.NET CF 2.0\CustomMarshalers.dll

• uložte změny a zavřete soubor

5. Změny v systémových registrech (buďte opatrní!)
• Musíte ručně upravit některé hodnoty klíčů (asi 14) v
[HKEY_LOCAL_MACHINE\Software\Microsoft\.NETCompactFramework\
Installer\Assemblies\Global]
následujícím způsobem
(Všimněte si: “\Storage Card” je vždy předřazeno každé hodnotě):
Value:
System.Windows.Forms.DataGrid, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC

Originální value Data (MultiString):
\Windows\GAC_System.Windows.Forms.DataGrid_v2_0_0_0_cneutral_1.dll
\Program Files\.NET CF 2.0\system.windows.forms.datagrid.dll
Upravená value Data:
\Storage Card\Windows\GAC_System.Windows.Forms.DataGrid_v2_0_0_0_cneutral_1.dll
\Storage Card\Program Files\.NET CF 2.0\system.windows.forms.datagrid.dll

registry.reg

• upravte jen hodnoty (values), které obsahují soubor uvedený v odstavci 3.(viz Přesun souborů na kartu) ve svém prvním řádku a soubor z GAC (viz odstavec 4.) v druhém řádku multi-string hodnoty.
• můžete použít přiložený soubor “registry.reg” jako příklad nebo jej i přímo naimportovat
• Upozornění: soubory MSCOREE2_0.dll, netcfagl2_0.dll a netcfd3dm2_0.dll se v registrech nenacházejí takže žádná úprava pro ně není potřebná
• Nakonec přidejte cestu na adresář “\storage card\windows” do klíče “HKEY_LOCAL_MACHINE\Loader\SystemPath”
• Zde již mohou být přítomné i jiné položky(adresáře) takže jen přidejte novou. “SystemPath” je Multi-String hodnota takže přidejte novou cestu jako nový řádek (Enter vytvoří nový řádek) např. bude obsahovat:
\windows\oem\
\storage card\windows\

6. Hotovo
Jen pro jistotu restartujte zařízení a zkuste spustit nějakou aplikaci, jež používá CF2

7. Možné potíže
Jestliže aplikace (využívající CF2) generuje vyjímku (exception) během spouštění nebo nereaguje vůbec (tj. nic se neděje když zvolíte EXE soubor):
• ověřte všechny údaje, které jste měnili v registrech, je vše správně a všechny položky jsou upraveny (a správně)?
• ověřte GAC soubor
• ověřte zde všechny soubory uvedené v GAC a/nebo registrech jsou přesunuty do nového umístění (na kartu)
• řekněte “doprdele” a začněte úplně od začátku, mělo by to pomoci -:)
• a věřte, určitě to funguje, je to ověřené více lidma

Hodně zdaru a napište jak jste dopadli.

22 komentářů Compact Framework 2.0 na paměťové kartě

  • Nepíšete nic o modelu (přítroji) o kterém se bavíme. Zřejmě jde o starší kousek s WM5 a .NET CF 1.1.
    Starší verzi, což je jak předpokládám ona 1.1, odinstalovat zřejmě nepůjde, jelikož je součástí ROM. Neměl by být ale žádný problém současně provozovat obě verze CF tj. 1.1 a 2.0. Sám jsem na svém starém Qtekovi 8310 takto postupoval a bez problémů. Co konkrétně hlásí instalace CF2 než se přeruší?

  • Ladislav Soukup

    Jen pro info… ty tři “zmatené” znaky na začátku jsou tzn. “BOM” a nachází se na začátku každého souboru v UTF-8 (díky nim totiž editory poznají, že pracují s UTF-8″).
    Jinak díky za návod 😀

Napsat komentář

Můžete použít tyto HTML tagy

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>