PDAclub.pl - Forum użytkowników technologii mobilnych
Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Pocket PC z telefonem - ogólnie (WM Professional/WP6.x) => HTC => Wątek zaczęty przez: globalbus w Sierpień 28, 2008, 13:09:19
-
Są 2 metody zrobienia OEMPacka, ręczna i automatyczna przez programik packages_creator (w załączniku (http://www.4shared.com/file/60789903/5130d534/Packages_creator.html)). Problem polega na tym, że paczka zrobiona przez taki program nie do końca nadaje się do użycia ;)
1.Podstawowe części OEMPacka:
- wszystkie pliki wrzucone do OEMPacka wylądują w \Windows na urządzeniu!
- option.xml -> plik umożliwiający selekcję OEMPacka w BuildOS, wygląda mniej więcej tak
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Items>
<Item name="Nazwa" group="Nazwa grupy do której jest przypisany OEMPack" checked="true or false, czyli czy ma być domyślnie zaznaczony">
<Tip>Porada, wyświetlana przez najechanie myszką na Nazwę</Tip>
<Guid type="p">UUID</Guid>
</Item>
</Items>
option.xml powinien być zapisany jako unicode, ostrożnie też ze stosowaniem znaków specjalnych (wprowadzamy je według zasad XML). Jeśli nie damy option.xml, paczka zostanie automatycznie dodana.
- Pewnie zastanawiacie się co to jest te UUID?
UUID - Universally Unique Identifier, potrzebny do organizacji plików w kuchni, W jednej paczce musi być to samo UUID w option.xml, .dsm i .rgu, inaczej BuildOS wysypie się już na wstępie.
Skąd to wziąć?
Wpisać w google "UUID generator" :P - plik .dsm w formacie UUID.dsm -> normalnie służy do posegregowania wszystkich fragmentów \dump do katalogów OEM i SYS, ale w naszym przypadku może mieć pustą zawartość, nie będziemy po ugotowaniu ROMu znowu rozrzucać go na części pierwsze ;)
- plik .rgu w formacie UUID.rgu -> tutaj jest popełnianych najwięcej błędów, plik musi posiadać nagłówek "REGEDIT4", enter na końcu i musi być zapisany w formacie unicode. Po więcej informacji odsyłam was tutaj http://support.microsoft.com/kb/310516/PL/ Jeśli nie dodajemy nic do rejestru możemy pominąć tworzenie pliku .rgu
przykładowy plik rejestru
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\CommManager]
"SupportedFunctions"=dword:0000000A
"DisableButtonText"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\CommManager\0]
""="FlightMode"
[HKEY_LOCAL_MACHINE\SOFTWARE\HTC\CommManager\WLAN]
""="\\Windows\\WLanMgr.exe"
"DeviceName"="{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\TIACXWLN1"
- initflashfiles.txt -> umożliwia kopiowanie plików z \windows i tworzenie katalogów
przykładowy plik
Directory("\Windows\"):-Directory("gfx")
Directory("\Windows\gfx\"):-Directory("clock")
Directory("\Windows\gfx\"):-Directory("clockA")
Directory("\Windows\gfx\"):-Directory("weather")
Directory("\Windows\gfx"):-File("arrows.png","\windows\000-arrows.png")
Directory("\Windows\gfx"):-File("battery1.png","\windows\000-battery1.png")
Directory("\Windows\gfx"):-File("battery2.png","\windows\000-battery2.png")
Directory("\Windows\gfx"):-File("battery3.png","\windows\000-battery3.png")
Directory("\Windows\gfx"):-File("batteryg.png","\windows\000-batteryg.png")
Directory("\Windows\gfx"):-File("buttons.png","\windows\000-buttons.png")
Directory("\Windows\gfx"):-File("notice.png","\windows\000-notice.png")
Directory("\Windows\gfx"):-File("pbackward.png","\windows\000-pbackward.png")
Directory("\Windows\gfx"):-File("pbarbutton.png","\windows\000-pbarbutton.png")
Directory("\Windows\gfx"):-File("pbaroff.png","\windows\000-pbaroff.png")
Directory("\Windows\gfx"):-File("pbaron.png","\windows\000-pbaron.png")
Directory("\katalog1\"):-Directory("katalog2") utworzy coś takiego \katalog1\katalog2
Directory("\Windows\gfx"):-File("buttons.png","\windows\000-buttons.png") przekopiuje plik 000-buttons.png do \windows\gfx i zmieni jego nazwę na buttons.png
2. A może by to tak automatycznie? (packages_creator)
- kopiujemy interesujący nas .cab do jakiegoś folderu na dysku C np C:\caby\
- uruchamiamy packages_creator, open cab file i wskazujemy plik
- Otworzy się winCE cab analizer, klikamy 7 ikonkę od lewej, potwierdzamy i zamykamy to okno.
- Program zapyta się teraz do którego pliku utworzyć skrót i w jakim katalogu, klikamy Default i wprowadzamy adres ręcznie, nazywamy link i klikamy done
- Kończymy pracę klikając "complete package"
3. Optymalizacja (na przykładzie NetFront Browser 3.5)
Po przetworzeniu paczki initflashfiles.txt wygląda mnie więcej tak Directory("\Program Files\"):-Directory("NetFront Browser v3.5")
Directory("\Program Files\NetFront Browser v3.5\"):-Directory("cache")
Directory("\Program Files\NetFront Browser v3.5\"):-Directory("search")
Directory("\Program Files\NetFront Browser v3.5\"):-Directory("skin")
Directory("\Program Files\NetFront Browser v3.5\"):-Directory("thumbnail")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFB35Res.dll","\windows\000-NFB35Res.dll")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFB35ResVGA.dll","\windows\000-NFB35ResVGA.dll")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFBrowser.exe","\windows\000-NFBrowser.exe")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFBrowser35.dll","\windows\000-NFBrowser35.dll")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFLauncher.exe","\windows\000-NFLauncher.exe")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFSetting.exe","\windows\000-NFSetting.exe")
Directory("\Program Files\NetFront Browser v3.5"):-File("NFSetup.dll","\windows\000-NFSetup.dll")
Directory("\Program Files\NetFront Browser v3.5"):-File("title_e.gif","\windows\000-title_e.gif")
Directory("\Program Files\NetFront Browser v3.5"):-File("title_e_VGA.gif","\windows\000-title_e_VGA.gif")
Directory("\Program Files\NetFront Browser v3.5"):-File("top.html","\windows\000-top.html")
Directory("\Program Files\NetFront Browser v3.5"):-File("top_VGA.html","\windows\000-top_VGA.html")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("BBC - bbc.co.uk homepage - Home of the BBC on the Internet.vbt","\windows\000-BBC - bbc.co.uk homepage - Home of the BBC on the Internet.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News.vbt","\windows\000-CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("eBay - New & used electronics, cars, apparel, collectibles, sporting goods & more at low prices.vbt","\windows\000-eBay - New & used electronics, cars, apparel, collectibles, sporting goods & more at low prices.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("Google.vbt","\windows\000-Google.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("internet.com - the Internet and IT Network from Jupitermedia Corp..vbt","\windows\000-internet.com - the Internet and IT Network from Jupitermedia Corp..vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("Lycos.vbt","\windows\000-Lycos.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("The New York Times - Breaking News, World News & Multimedia.vbt","\windows\000-The New York Times - Breaking News, World News & Multimedia.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("The top news headlines on current events from Yahoo! News.vbt","\windows\000-The top news headlines on current events from Yahoo! News.vbt")
Directory("\Program Files\NetFront Browser v3.5\thumbnail"):-File("Welcome to About.com.vbt","\windows\000-Welcome to About.com.vbt")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vbl_bg.gif","\windows\000-vbl_bg.gif")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vbl_down.bmp","\windows\000-vbl_down.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vbl_down_focus.bmp","\windows\000-vbl_down_focus.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vbl_up.bmp","\windows\000-vbl_up.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vbl_up_focus.bmp","\windows\000-vbl_up_focus.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_bar_over.bmp","\windows\000-vb_bar_over.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_bar_under.bmp","\windows\000-vb_bar_under.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_bg.gif","\windows\000-vb_bg.gif")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_default.bmp","\windows\000-vb_default.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_down.bmp","\windows\000-vb_down.bmp")
Directory("\Program Files\NetFront Browser v3.5\skin"):-File("vb_down_focus.bmp","\windows\000-vb_down_focus.bmp")
Zaraz, zaraz a po co to wszystko kopiować? Chyba każdy chce mieć więcej wolnego miejsca ? :D
- Patrzymy na pliki które są umieszczone w \Program Files\NetFront Browser v3.5 i zmieniamy ich nazwy usuwając "000-"
- Uruchamiamy w notatniku replace, zamieniamy "\Program Files\NetFront Browser v3.5\" na "\windows\"
- Znowu patrzymy na pliki i na initflashfiles.txt, usuwamy pliki instalatora .cab, które są nam do niczego nie potrzebne (w tym wypadku "0NFSetup.dll" i "000-NFSetup.dll")
- Usuwamy głupie wpisy, które zostały po tej operacji np Directory("\Program Files\"):-Directory("NetFront Browser v3.5") i Directory("\Program Files\NetFront Browser v3.5"):-File("NFB35Res.dll","\windows\000-NFB35Res.dll")
- Wrzucamy "NFBrowser" do \windows na urządzeniu, tworzymy skrót przez eksplorator plików i podmieniamy ze skrótem stworzonym przez packages_creator
- Zaraz to wszystko? Nie! Czas na eksperymenty :) Czynności wykonane tutaj najlepiej sprawdzać po kolei. Patrząć na pliki, po co nam "NFB35ResVGA.dll" przy ekranie qvga? Kasujemy. Możemy również spróbować kompresji plików wykonywalnych narzędziem UPX (http://upx.sourceforge.net/), ale pamiętajcie, że nie wszystkie pliki chcą się uruchomić po spakowaniu.
4. Debugging
- BuildOS pokazuje, że plik który chcemy dodać już istnieje -> poszukać i skasować duplikat
- BuildOS zgłasza "error building user.hv and default.hv" -> plik rejestru jest źle skonstruowany/zapisany
- Brakuje skrótu do programu -> popatrz w initflashfiles.txt czy czegoś nie brakuje.
5. Sprawdzamy przed wgraniem (po co komu wgrywanie za każdym razem?)
- Wrzucamy wszystkie pliki na miejsce, w które mają trafić
- Importujemy rejestr z pliku za pomocą np tego programu (http://www.pocketpcfreeware.com/en/index.php?soft=1612)
- Sprawdzamy czy działa.
Życzę wszystkim udanego gotowania ;)
-
Dobra robota :ok: aby tak dalej.
-
Muszę powiedzieć że kolega naprawdę, się postarał jednak na dzisiejszy dzień jest już łatwiej tworzyć dane nam operacje, o ile wiem podobny plik znajduje się na mobione.pl , ale jestem jak najbardziej za, żeby ilość właśnie artykułów pomocy nas przerosła.
Pozdrawiam - Świetna praca
-
A jesli po wyciagnieciu z cab paczka wyglada tak?? Da się to jakoś ugotować żeby nie pokazywało się że jest wiele dms'ow i rgu?
(http://www.wgraj.info/img.php?mode=show&file=1287&height=512&width=904)
-
zapewne przepaczkowałeś caba w którym już były rgu i dsm
wypakuj go tylko, nie dodawaj nic nowego
-
Uzylem packages creator 5.5
Jak się domyślam to są 3 paczki w jednym. 2 phone canvas w tym jeden z mui i drugi ten slide coś tam, ale jak to po segregować??
-
po prostu wywal te niepotrzebne i tyle
na przyszłość używaj freetexthost, albo tagów bo raczej nieprzyjemnie się to ogląda
-
Uruchamiamy w notatniku replace, zamieniamy "\Program Files\NetFront Browser v3.5\" na "\windows\"
Czy jeżeli się tego nie zrobi to pliki zostaną w katalogu Windows i pojawią się w Program Files? (czyli będą w 2ch miejscach?)
-
tak
-
Czyli, w przypadku kodu z przykładu obrazki będą w katalogu Windows i podkatalogu gfx?
5 Directory("\Windows\gfx"):-File("arrows.png","\windows\000-arrows.png")
6 Directory("\Windows\gfx"):-File("battery1.png","\windows\000-battery1.png")
7 Directory("\Windows\gfx"):-File("battery2.png","\windows\000-battery2.png")
8 Directory("\Windows\gfx"):-File("battery3.png","\windows\000-battery3.png")
9 Directory("\Windows\gfx"):-File("batteryg.png","\windows\000-batteryg.png")
10 Directory("\Windows\gfx"):-File("buttons.png","\windows\000-buttons.png")
11 Directory("\Windows\gfx"):-File("notice.png","\windows\000-notice.png")
12 Directory("\Windows\gfx"):-File("pbackward.png","\windows\000-pbackward.png")
13 Directory("\Windows\gfx"):-File("pbarbutton.png","\windows\000-pbarbutton.png")
14 Directory("\Windows\gfx"):-File("pbaroff.png","\windows\000-pbaroff.png")
15 Directory("\Windows\gfx"):-File("pbaron.png","\windows\000-pbaron.png")
Dobrze rozumiem? Jeśli tak, to strasznie marnuje się miejsce..
-
tak, wiem że się marnuje.
Nie mniej moje porady są po to, żeby marnowało się mniej :)
-
Eh... chciałem do kuchenki 1.23 dołączyć nowe stery IPM Slabnoff ale ciągle wywala BuildOS.bat już na wstępie.
Oto jak to wygląda:
Zmieniłem plik option.xml z:
<Items>
<Item name="Slabnoff" group="Драйвер процессора(ВЫБРАТЬ ТОЛЬКО ОДИН, ВЫБОР ОБЯЗАТЕЛЕН!!!)" checked="true">
<Tip/>
<Guid type="p">
c01d2800-4853-4a75-8848-c5c8dcbae916
</Guid>
</Item>
</Items>
na:
<Items>
<Item name="Slabnoff" group="IPM" checked="true">
<Tip/>
<Guid type="p">
c01d2800-4853-4a75-8848-c5c8dcbae916
</Guid>
</Item>
</Items>
Reszta plików po wypakowaniu Slabnoff.zip to:
1. c01d2800-4853-4a75-8848-c5c8dcbae916.dsm
2. folder pxa27x_ipm.dll a w nim:
a. imageinfo.bin
b. imageinfo.txt
c. pxa27x_ipm5.dll
d. pxa27x_ipm5.idb
e. S001
f. S002
g. S003
Zgodnie z tourtialem plik .dsm oraz wartość w option.xml są takie same. Gdy kopiuję cały katalog do folderu OEM w kuchence to nie da się uruchomić BuildOS.bat
Oprócz tego zrobiłem plik .rgu o nazwie c01d2800-4853-4a75-8848-c5c8dcbae916.rgu i wygląda następująco:
REGEDIT4
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IPM]
"Prefix"="IPM"
"Dll"="pxa27x_ipm5.dll"
"Index" = dword:1
"Order" = dword:0
"DeviceTimeOut"=dword:30
"ProfileType"=dword:4
Wiem, że na pewno robię coś źle bo robię to pierwszy raz a informatykiem nie jestem ;) Jakieś sugestie?
Zastanawiam się tylko, czy dobrze ustawiłem parametr "Dll"="pxa27x_ipm5.dll" bo folder nazywa sie pxa27x_ipm.dll ale w środku jest plik pxa27x_ipm5.dll
Tylko, że nawet gdy dołożyłem "5" do nazwy folderu to i tak nie ruszyło :(
-
GUID jest unikalny? nie może być dubli
-
Tzn, że co powinienem zrobić?
EDIT:
Już wiem :-? PocketWakeUp ma taki sam GUID. Spróbuję go wyrzucić...
Jeszcze pytanie o tą "piątkę". W paczce Slabnoff jest folder pxa27x_ipm.dll a w nim plik pxa27x_ipm5.dll. To teraz w pliku rejestru powinno być "Dll"="pxa27x_ipm5.dll" czy "Dll"="pxa27x_ipm.dll"? Czy może zmienić tak, żeby wszędzie ta "5" była albo jej nie było?
-
Głupio mi trochę odkopywać temat sprzed grubo ponad roku, ale skoro już taki jest, to nie ma sensu zakładanie nowego.
wjtk poruszył już ten temat - kopiowanie plików i ich częste występowanie w dwóch miejscach jednocześnie. Weźmy 1-Calc z kuchni C&C:
initflashfiles.txt
Directory("\Windows"):-Directory("Skins")
Directory("\Windows\Skins"):-File("default.ini","\Windows\default.ini")
Directory("\Windows\Skins"):-Directory("Default")
Directory("\Windows\Skins\Default"):-File("button.ini","\Windows\button.ini")
Directory("\Windows\Skins\Default"):-File("display_menu.png","\Windows\display_menu.png")
Directory("\Windows\Skins\Default"):-File("texture2.png","\Windows\texture2.png")
Directory("\Windows"):-Directory("Currency")
Directory("\Windows\Currency"):-File("currency.ini","\Windows\currency.ini")
Directory("\Windows\Start Menu\Programs\Accessories"):-File("Calculator.lnk","\Windows\1-Calc Lite.lnk")
Pliki, jak button.ini, znajduje się w dwóch lokacjach. Teraz moje pytanie - czy jest to konieczne? Czy nie można zostawić tych plików po prostu w \windows\? Co prawda spowoduje to spory bałagan, ale jednocześnie zmniejszy zużycie pamięci.
Kolejna sprawa, tycząca się stricte procesu tworzenia OEM pack-ów. Korzystam z metody automatycznej i wszystko niby się zgadza poza tym, że OEM pack stworzony tą metodą (z pliku .cab) ani strukturą nie przypomina tych gotowych w kuchni, ani rozmiarem (na przykładzie XnPocket z C&C - OEM z kuchni 1,3 MB, OEM stworzony przeze mnie z pliku .cab 1,9 MB). Czy to normalne, czy ja coś pomieszałem (choć chyba trudno by było skoro wszystko idzie automatycznie, poza edycją initflashfiles i options).
-
Pliki, jak button.ini, znajduje się w dwóch lokacjach. Teraz moje pytanie - czy jest to konieczne? Czy nie można zostawić tych plików po prostu w \windows\? Co prawda spowoduje to spory bałagan, ale jednocześnie zmniejszy zużycie pamięci.
To wywal, program raczej odmówi współpracy (może w hexach da się zmienić lokację)
Czy to normalne, czy ja coś pomieszałem (choć chyba trudno by było skoro wszystko idzie automatycznie, poza edycją initflashfiles i options).
Akurat XnView całość składa się z 2 .exe, więc rozbieżności tutaj nie powinno być (poza tym, że u mnie to egzystuje jako moduły).
-
Pliki, jak button.ini, znajduje się w dwóch lokacjach. Teraz moje pytanie - czy jest to konieczne? Czy nie można zostawić tych plików po prostu w \windows\? Co prawda spowoduje to spory bałagan, ale jednocześnie zmniejszy zużycie pamięci.
To wywal, program raczej odmówi współpracy (może w hexach da się zmienić lokację)
Faktycznie, nie ruszy, czyli pewną strukturę trzeba zachować. Gorzej, że plik (w tym przypadku) button.ini znajdujący się bezpośrednio w \windows\ jest nie do ruszenia, mimo że nie powinien być poprzedni (skoro program żąda tego w \windows\Skins\Default\). Co prawda w tym przypadku to żadna strata miejsca, ale wiadomo, kropla do kropli i się uzbiera.
-
Mam pytanko:
jak najlepiej budować OEMPacki w różnych wersjach językowych? Jak się pracowało na EXT to były podkatalogi z LangID, a w nich oddzielne pliki app.reg i app.dat, a jak to robić w OEM? Można zrobić kilka oddzielnych paczek dla jednego programu, np.
PROG
PROG_0409
PROG_0415
itd. Wtedy rgu możnaby umieścić różne dla tego samego programu, ale co z initflashfiles.txt? Jeśli chciałbym, żeby skrót do programu znajdujący się w PROG był kopiowany dla 0415 do Start Menu/Programy/Aplikacje, a dla 0409 Start Menu/Programs/Apps?
Czy initflashfiles.txt umieszczony w PROG_0409 poradzi sobie z plikami umieszczonymi w PROG?
EDIT: A jeszcze pytanie jak w takim razie dobrze przekonwertować paczki EXT z podkatalogami 0409 i 0415? Po automatycznej konwersji wszystkie pliki znajdą się w jednym katalogu...