Skocz do zawartości

maggreg

Użytkownicy
  • Postów

    649
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez maggreg

  1. Dla osób którym przygotowanie plików wim z systemami instalacyjnymi sprawia problem przygotowałem skrypt który mocno automatyzuje cały proces.

    Koncepcja skryptu polega na założeniu, że w standardowym pliku instalacyjnym windowsa txtsetup.sif pliki sekcji ~BT mają określony format, w kilku artykułach opisujących tworzenie płyt multisystemowych jest ten fakt wykorzystywany.

    Miedzy innymi @Picasso podparła się tym w swoim opisie - pozwolę sobie zacytować:

     

    picasso napisał:

     

    Metoda 2 - wyciągnięcie listy plików z pliku TXTSETUP.SIF:

    Ta metoda jest jeszcze bardziej męcząca. Polega ona na zrobieniu listy na podstawie pliku TXTSETUP.SIF, a następnie ręcznym przekopiowaniu plików z folderu i386 do skorelowanego bootfolderu.

    disc.gifG:
    ---- folder.gifDVD
    -------- folder.gifSETUP
    ------------ folder.gifWINXP
    ---------------- folder.gifPRO (cała zawartość płytki)
    -------------------- folder.gifi386 (tu siedzi TXTSETUP.SIF)

    W tym pliku w sekcjach [sourceDisksFiles...] wszystkie pliki, które mają w ciągu kreskę przed lub po numerze np:

    kbdus.dll = 1,,,,,,_5,2,0,0,,1,2
    1394bus.sys = 100,,,,,,3_,4,1,,,1,4


    ... to są właśnie pliki, które mają się znaleźć w bootfolderze. Kto by to "oczami" sprawdzał! Można sobie uprościć robiąc listę w trybie automatycznym przez plik BAT. Wystarczy w folderze i386 utworzyć plik BAT o poniższej zawartości i go uruchomić:
     

    
    type TXTSETUP.SIF | findstr /r ",_[1-9] ,[1-9]_" > C:\LOG.TXT

     

    Na C:\ powstanie plik LOG.TXT zawierający listę plików. Na podstawie tej listy należy z i386 przekopiowć: wszystkie pasujące spakowane pliki (one nie mają tam rozszerzeń EXE / SYS tylko ich zcabowane odpowiedniki EX_ / SY_ etc.) + TXTSETUP.SIF + folder system32 do nowego bootfolderu.

     

    Oczywiście ręczne robótki nie wchodzą w grę - my cały proces sobie troszkę zautomatyzujemy, dodatkowo dla naszych potrzeb w katalogu muszą się znaleźć też pliki setupu i kilka podstawowych - nadrzędnych sterowników.

     

    Oto sam skrypt vbs. (proszę pamiętać o zapisaniu z odpowiednim rozszerzeniem):

     

    On Error Resume Next
    
    Set objShell = CreateObject("WScript.Shell")
    Set objRegEx = New RegExp
    'Set objRegEx = CreateObject("VBScript.RegExp")
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    fso.createfolder "instalka"
    fso.createfolder "instalka\$WIN_NT$.~LS"
    fso.createfolder "instalka\$WIN_NT$.~LS\i386"
    fso.createfolder "instalka\$WIN_NT$.~BT"
    
    Set objFile = fso.OpenTextFile("i386\TXTSETUP.SIF", 1, True)
    
    objRegEx.Pattern = ",[1-9]_|,_[1-9]"
    
    Do Until objFile.AtEndOfStream
       strSearchString = objFile.ReadLine
       Set colMatches = objRegEx.Execute(strSearchString)  
           For Each strMatch in colMatches   
              FSO.CopyFile "I386\"& left(split(strSearchString)(0),Len(split(strSearchString)(0))-1) & "_" ,"instalka\$WIN_NT$.~BT\"
           Next
    Loop
    
    objFile.Close
    
    FSO.CopyFile "I386\biosinfo.inf" ,"instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\bootfont.bin" ,"instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\kbdpl1.dll","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\ntdetect.com","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\setupldr.bin","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\setupreg.hiv","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\spcmdcon.sys","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\txtsetup.sif","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\ksecdd.sys","instalka\$WIN_NT$.~BT\"
    FSO.CopyFile "I386\ntfs.sys","instalka\$WIN_NT$.~BT\"
    
    FSO.CopyFolder "I386\system32","instalka\$WIN_NT$.~BT\"
    
    FSO.CopyFile "I386\*" , "instalka\$WIN_NT$.~LS\i386"
    FSO.CopyFolder "I386\system32", "instalka\$WIN_NT$.~LS\i386\"
    
    FSO.CopyFolder "I386\uniproc", "instalka\$WIN_NT$.~LS\i386\"
    FSO.CopyFolder "I386\asms", "instalka\$WIN_NT$.~LS\i386\"
    
    
    FSO.CopyFile "I386\bootfont.bin" ,"instalka\"
    FSO.CopyFile "I386\ntdetect.com","instalka\"
    FSO.CopyFile "I386\txtsetup.sif","instalka\"
    FSO.CopyFile "I386\setupldr.bin","instalka\ntldr"
    
    
    Set objFile = fso.CreateTextFile("instalka\$WIN_NT$.~BT\disk101",  True)
    objFile.Close
    Set objFile = fso.CreateTextFile("instalka\$WIN_NT$.~BT\disk102",  True)
    objFile.Close
    Set objFile = fso.CreateTextFile("instalka\$WIN_NT$.~BT\disk103",  True)
    objFile.Close
    Set objFile = fso.CreateTextFile("instalka\$WIN_NT$.~BT\disk104",  True)
    objFile.Close
    
    Wscript.Quit
    

     

    Skrypt należy umieścić w dowolnym katalogu na dysku, w tym samym katalogu należy umieścić katalog i386 z płyty instalacyjnej windowsa (skrypt powinien działać z systemami od 2000 poprzez xp do 2003 R2) a następnie odpalić z uprawnieniami administracyjnymi (jeżeli mamy aktywny UAC proszę to zrobić z poziomu konsoli uruchomionej w trybie administratora po uprzednim ustawieniu fokusu na nasz katalog).

     

    przykład - załóżmy, że nasz katalog roboczy znajduje się na dysku e: i nazywa się "tymczasowy", odpalamy konsolę z uprawnieniami administratora i wydajemy polecenie (zakładam, że katalog i386 już się znalazł w tym katalogu):

     

     

    cd /d e:\tymczasowy

    makewimfolder.vbs

     

    skrypt można nazwać dowolnie, makewimfolder.vbs to jedynie przykład, ważne jest rozszerzenie.

     

    Wynikiem działania skryptu będzie katalog "instalka" zawierający prawidłową strukturę plików i katalogów dla celów instalacyjnych. Teraz wystarczy ten katalog przechwycić do pliku wim z pomocą imagex-a (można się posiłkować nakładką Gimagex):

     

     

    imagex /capture e:\tymczasowy\instalka naszwim.wim "nasz przykładowy opis dla obrazu" /compress maximum

     

    "nasz przykładowy opis dla obrazu" - opis który tutaj wstawimy jest mało istotny dla działania zestawu, może się okazać przydatny jeżeli będziemy budować pliki zawierające wiele obrazów jednocześnie, dzięki temu łatwiej je będzie odróżnić.

     

    W ten sposób utworzony plik różni się troszeczkę od tego otrzymanego metodą "pierwszej fazy instalacji" ale różnice nie mają znaczenia dla jego użycia dla naszych potrzeb. Utworzone pliki sprawdziłem na maszynie wirtualnej jak i fizycznym komputerze (zarówno instalacje standardowe jak i nienadzorowane).

     

    Skrypt przeznaczony dla 32 bitowych polskojęzycznych edycji systemów

    Jeżeli ktoś chciałby uzyć go na innej wersji językowej należy poprawić linijkę kopiującą plik obsług klawiatury - w edycji polskiej "kbdpl1.dll"

     

     

    pzdr

  2. Nie chodzi mi o przerabianie sensu stricte w rozumieniu programistycznym, raczej chodzi o przystosowanie pliku inf do twojej karty a najlepiej na początek po prostu użycie/podmiana plików wspólnych dla tych wszystkich kart.

    Tak swoją drogą - rzut oka na nazwy katalogów ze sterami i można zgadywać, że rożni producenci używają tego samego "wnętrza":

    stery od asusa dla st - PCI-ST-101004-7.12.8.1792(W7-ER-04)

    stery od auzentecha dla meridiana - PCI-8788-100823-7.12.8.1791(W7-RC-02)

     

    pzdr

  3. Teoria piękna i zasadniczo działa do czasu aż chcemy skorzystać z X-ów, jako user który zawsze miał nietypowe myszki i klawiatury muszę napisać, że właśnie z tym miałem największe problemy, choć ostatnie linuxa domowego stawiałem lata temu, teraz pewnie jest lepiej, na czas konfiguracji iksów musiałem wyciągać starą klawiaturę z szuflady.

    Widzę @Sevard, że masz doświadczenie więc zapytam - jak jest w przypadku takiego pseudo liva ze sterami graficznymi w iksach, zwłaszcza akceleracja, czy też da się to pogodzić, uogulnić?

     

    I jeszcze jedna własna obserwacja - napisałeś o przenoszeniu linuxa w locie, ja osobiście kiedyś miałem problem z przeniesieniem linuxa z dysku na dysk w tej samej maszynie. SUSE (bo o nim mowa) upierał się, że zmienił się numer seryjny dysku (po kiego grzyba się do niego przywiązał - nie wiem), trochę się wtedy namęczyłem a systemu używałem wtedy w procesie produkcyjnym jako serwera DHCP i TFTP.

     

     

    Offtop: Osobiście bardzo lubię właśnie Gentoo, bardzo dobra dokumentacja, można liznąć sporo podstaw linuxa przy samej instalacji, jeżeli chodzi o mnie to właśnie instalacja mnie bawi (dziwne ale prawdziwe), jak już wszystko działa, jest skonfigurowane, flagi USE są w końcu skonfigurowane tak, że wszystko już się instaluje bezkonfliktowo to wtedy system idzie do kosza (akurat w domowych warunkach bawię się tylko na maszynie wirtualnej).

     

    pzdr

  4. W przypadku Creative zmodowane sterowniki często pomagają, co więcej przerobione stery od Auzentecha przy okazji oferują lepszą jakość dźwięku, więc kto wie, może tu również dadzą radę.

     

    Mała prywata. Kiedyś -jak jeszcze miałem X-FI - sam wypuszczałem przeróbkę włączającą wbudowany dekoder dolby na kartach w których creative raczyło tą funkcjonalność zablokować, gdzieś jeszcze mam skrypt do winhexa którym poprawiałem sumę kontrolną którą wprowadził creative w nowszych sterownikach żeby takie zabawy utrudnić.

     

    A wracając do przerabiania sterowników, myślę że dopóki będą one przeznaczone dla tego samego chipsetu to będą one bezpieczne , co prawda karty będą się różnić preampami czy konwerterami analog cyfra i w drugą stronę ale nie powinno to uszkodzić sprzętu, z punktu widzenia DX problemem jest mostek PCI <> PCI-E - zakładam, że też wymaga sterownika (tego nie wiem) i w tym przypadku raczej nie powinno się używać niczego innego (a może to właśnie mostek stanowi źródło problemów). Dlatego na początek zabawy zacząłbym od fragmentów sterowników - choćby przywoływany tu cmudaxp.sys, przerabianie sterowników (nawet samego inf) i tak spowoduje komunikat, że stery nie są podpisane.

     

    pzdr

  5. Dotyczy to tylko i wyłącznie Windowsa. GNU/Linux nie robi takich problemów, o ile wszystkie sterowniki są na dysku, na którym się go instaluje. Ba, nie ma nawet problemów z kopiowaniem postawionego systemu między partycjami i przenoszeniem go na innego kompa.

     

    To zależy tylko od podejścia producenta danej dystrybucji, nadal twierdzę że typowo zainstalowany system nie będzie systemem niezależnym od sprzętu, oczywiście producenci poszczególnych dystrybucji idą na skróty i przygotowują jak najbardziej uniwersalne jądro (z minimalną liczbą sterowników wkompilowanych) co ułatwia pójście w stronę live, dużo zależy od mechanizmu rozpoznawania sprzętu i ładowania sterowników, jeżeli dana dystrybucja będzie ładowała wszystkie dostępne moduły .ko to po prostu się wysypie.

    W skrajnych przypadkach nawet sterowniki systemu plików odpalane są z modułów a cały system startuje przez initrd.

     

     

    Jeżeli natomiast chodzi o zapisywanie zmian w edycjach live to jest to rozwiązane różnie, czasem działa z automatu, czasem wymaga założenia katalogu o określonej nazwie a czasem podania ścieżki (bądź zmiennej) w linijce startującej system (w konfigu dla syslinuxa, gruba czy co tam akurat używasz do startowania systemu).

     

    pzdr

  6. Są jeszcze alternatywne stery:

    http://brainbit.wordpress.com/category/uni-xonar/

     

    ale póki bazują one na tych oficjalnych to cudów bym się nie spodziewał.

    Powiem szczerze - mam kilku znajomych z xonarami i żaden nie skarżył się na problemy sprzętowe (wśród nich jest również DX) ale skoro twierdzicie, że jest to szerszy problem nie będę tego negował.

     

    Można spróbować odpalenia na przerobionych sterownikach Auzentecha albo Razera do ich kart (czy też cokolwiek na tym samym chipie).

     

    Z rzecznikiem zawsze warto porozmawiać to nic nie kosztuje, sęk w tym że dopóki będą w stanie w Asusie udowodnić, że karta działa na innym sprzęcie to będą zganiać na twoją konfigurację i wymiana na coś innego będzie zależeć od ich dobrej woli, zresztą rzecznik skupi się na sprzedawcy a nie producencie (a ten jako pośrednik jest tu najmniej winny), chyba że kupiłeś bezpośrednio od Asusa albo oficjalnego dystrybutora.

     

    pzdr

  7. A sprawdzałeś stabilność dodatkowego napięcia podawanego do karty, DX zdaje się ma typowo flopkowe złącze?

    Spróbowałbym też podnieść lekko napięcie dla ramów powyżej tego 1.9, z doświadczenia wiem że płyty asusa miewają problemy z pamięciami patriota.

    Próbowałeś updatu biosu? Pamiętam, że była seria płyt w których właśnie bios poprawiał kompatybilność z kartami serii xonar.

    Jak z częstotliwością magistrali i łącza - nie manipulowałeś nimi?

     

    Jeżeli sterowniki stanowiłyby problem to byłoby o tym głośno na sieci więc tutaj bym nie szukał problemu.

     

    Osobiście mam Xonara ST i w systemach windows nie spotkałem problemów, żadne sterowniki nie fixowały do tej pory (a było kilka wersji beta), jedyny problem - linux live (instalacyjnych nie sprawdzałem) zawiesza kartę w niebycie windows jej nie wykrywa (nawet przełożona do innego kompa nie zadziała :) ), trzeba odpalić liva od nowa (w nim karta ruszy) i wyłączyć "z buta".

     

    pzdr

  8. Na szybko przychodzi mi do głowy Slax czy też Nimblex - i oczywiście jako odmiany live nie wymagają instalacji, ba w przypadku korzystania z pena nie powinno się systemu live instalować (nawet jeżeli dana dystrybucja daje taką możliwość).

    Jeżeli koniecznie upierasz się nad instalacją linuxa przenośnego to można spróbować przerobić dowolną dystrybucję instalacyjną (być może niektóre mają taką opcję Out of Box - np Gentoo ale yu trudno mówić o instalacji z punktu widzenia przeciętnego użytkownika), trzeba po prostu wykorzystać mechanizm intrd i wykrywania sprzętu (czyli coś co robi instalator) do uruchomienia samego systemu, prawdopodobnie będzie trzeba skompilować własne jądro i maksymalną ilość sterowników w postaci modułów.

    Ja osobiście nie wyobrażam sobie jakie to zadania których nie da się zrobić w środowisku live miałyby skłonić typowego użytkownika do takiej zabawy (która na pewno spowoduje zarwanie parunastu nocek :) ).

     

    pzdr

  9. Trzeba wziąć pod uwagę to, że każdy system zainstalowany w przeciwieństwie do odmian typu live nie będzie systemem "hardware independent" czyli będzie go można używać wyłącznie na komputerze na którym został zainstalowany (lub na podobnej konfiguracji, zwłaszcza chipset i grafika powinny się pokrywać) co kłóci się z ideą systemu na pamięci przenośnej.

    Można znaleźć odmiany live które potrafią zapisać ustawienia w przypadku uruchomienia jeżeli są odpalone z nośnika pozwalającego na zapis przy czym nie trzeba dla takiego środowiska tworzyć oddzielnej partycji.

    Jeżeli chodzi o partycjonowanie pena to też należy pamiętać, że bez specjalnych sterowników typowy windows zobaczy tylko jedną (pierwszą partycję) fat bądź ntfs, myślę że to wane przy przenoszeniu danych.

     

    pzdr

  10. Często powtarzającym się pytaniem na różnych forach jest pytanie o możliwość instalacji systemu Windows na napędzie USB.

    Można znaleźć kilka opisów wykonania tego zadania, wszystkie sprowadzają się do takiej zmiany w plikach instalacyjnych aby odpowiednie sterowniki USB startowały w trybie "Bus Master".

    A dlaczego coś zmienić, może dać po prostu stworzyć odpowiednie sterowniki massstorage?

    Już się domyślacie, że odpowiedź jest twierdząca, poniżej linki do odpowiedniej paczki, są to sterowniki przystosowane do użycia z moim zestawem ale oczywiście można ich użyć z dyskietki F6 (a jak już ktoś koniecznie musi to zintegrować nLiteem).

     

    USB_32 lub USB_32.

     

    W przypadku USB3 co prawda cała zabawa miałaby więcej sensu ale proszę pamiętać, że dostępne na rynku rozwiązania tego typu posiadają własne dedykowane sterowniki i instalacja z ww paczką się nie powiedzie.

     

    Sterowniki wykorzystują pliki w wersji jaka jest natywnie dostępna w Win XP sp3 (oczywiście na windows update istnieje wersja nowsza).

     

    Ponieważ GUI generowane przez podany przeze mnie skrypt menu.hta domyślnie blokują możliwość wyboru napędu usb jako docelowego należy wprowadzić w skrypcie małą poprawkę.

    proszę linijkę:

     

    Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 3 AND DeviceID <> 'x:' AND DeviceID <> '" & arrCommands(1) & "'")

     

    zastąpić:

     

    Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where (DriveType = 3 OR DriveType = 2) AND DeviceID <> 'A:' AND DeviceID <> 'X:' AND DeviceID <> '" & arrCommands(1) & "'")

     

    Napęd instalacyjny nadal jest przez menu pomijany więc nie ma obaw, że skasujemy sobie nasze repozytorium, jednakże dobrze jest po przejściu fazy w GUI usunąć napęd na resztę czasu instalacji w przeciwnym wypadku instalator systemu potrafi utworzyć na tym napędzie konfigurację startową (i nadpisać botsektor), pamiętajmy że po dodaniu powyższych sterowników wszystkie napędy usb mass storage rozpoznawane przez te sterowniki są dla instalatora dostępne więc jeżeli w łańcuchu dos będą wyżej postawione zostaną potraktowane jako napęd startowy, zupełnie jak instalacja w konfiguracji wielodyskowej.

     

    Proszę nie używać w tym przypadku skryptów autoamytcznego przygotowania dysku, nasz docelowy usb może wylądować pod różnym numerem w systemie.

    Odpowiednią partycję należy przygotować ręcznie w diskpart lub innym narzędziem zewnętrznym.

     

    Jeżeli podczas instalacji pojawi się informacja o błędzie w setup.c proszę ją zignorować, występuje ona na niektórych fabrycznie sformatowanych pamięciach flash, aby jej uniknąć można wcześniej pena potraktować narzędziem HP do formatowania pamięci przenośnych.

     

    pzdr

     

    ps

    sama koncepcja nie jest w 100% moja, bazowałem w dużej części na rozwiązaniu dostępnym na forum MSFN w temacie link

  11. Na pierwszy ogień zgodnie z obietnicą dajemy menu do instalacji systemów z rodziny 2000 (xp i 2003) z użyciem plików wim.

    Najtrudniejszym dla początkującego użytkownika może być samo zbudowanie takich plików (a ze względów licencujnych nie wypada wrzucać już gotowych wersji na sieć).

    Zasadniczo przygotowanie takiej instalacji to tak naprawdę puszczenie pierwszej fazy instalacji z poziomu już zainstalowanego systemu (lub systemu winpe) a następnie (po małym posprzątaniu) jego spakowanie do samego wima.

    Najwygodniej całą zabawę przeprowadzić w środowisku wirtualnym (chyba, że dysponujemy nadmiarowym komputerem), przygotowujemy sobie w tym przypadku dwa dyski, jeden dla instalacji rozruchowej drugi dla przygotowania właściwego zestawu.

     

    Należy sobie zainstalować system rozruchowy, standardowa instalaka xp z płyty (pliku iso) bez żadnych dodatkowych obwarowań, można ten etap zastąpić odpaleniem środowiska winpe (w tym przypadku może to być np popularny erd commadner albo inne xp mini).

     

    Teraz należy sformatować nasz drugi dysk przy czym nie ma znaczenia ani format plików ani to czy będzie to dysk startowy, te atrybuty i tak nie zostaną zachowane podczas pakowania do wim.

     

    Możemy już przeprowadzić zasadniczą część przygotowania zestawu, w tym celu z konsoli wydajemy polecenia:

     

    cd d:\i386

    winnt32.exe /makelocalsource /syspart:h /tempdrive:h /noreboot

     

     

    gdzie d: - litera napędu w którym zamontowana jest nasza płyta instalacyjna windowsa a h: litera przypisana naszej partycji roboczej na drugim dysku.

     

    Resztę czynności wygodniej wykonać już w systemie hosta (zakładam, że te poprzednie wykonaliśmy w środowisku wirtualnym).

    Proszę podmontować sobie dysk roboczy, następnie usuwamy z katalogu "$WIN_NT$.~BT" pliki: winnt.sif, migrate.inf oraz bootsect.dat (usunięcie tych plików spowoduje, że nasz zestaw stanie się uniwersalny, do instalacji na dowolnej maszynie).

     

    Teraz z pomocą narzędzia imagex (można się posiłkować nakładkami typ gimagex) z zestawu waik (jak ktoś nie ma zestawu waik i ni chce go ściągać dla samego imagex-a proponuję poszukać na sieci zestawu minimum) przechwytujemy nasz świeżo upieczony zestaw instalacyjny:

     

    imagex /capture h: c:\winxppro.wim "Instalka WinXP Pro" /compress maximum

     

     

    gdzie h: to oczywiście nasz dysk tymczasowy, "c:\winxppro.wim" to ścieżka i nazwa do gotowego pliku wim a "Instalka WinXP Pro" jego opis (bez znaczenie, można tu wstawić cokolwiek).

     

    Oczywiście dla każdego systemu który chcemy później instalować musismy przygotować nowy wim (na końcu mozna je opcją eksport wrzucić do jednego pliku co osobiście polecam), dodatkowo pewne problemy stwarza przygotowanie instalek win 2000, po pierwsze nie chcą się one odpalać z systemów nowszych niż 2000 (ale bez problemu działają z winpe 1.5) po drugie po po przygotowaniu zestwu należy prze łapanie imagexem zastąpić jeszcze ntldr, otóż win 2000 stworzy dwa loadery, jeden już zasadniczy ntldr który jednak nie odpali instalacji i drugi $ldr$ który nie odpali się po usunięciu bootsect.dat, rozwiązaniem jest wywalenie ntldr i zmiana nazwy $ldr$ na ntldr, po instalacji właściwy loader zostanie przywrócony.

     

    W poście #4 link umieściłem skrypt i opis pozwalający na zautomatyzowane zbudowanie potrzebnego zestawu.

     

    uff - najtrudniejsze mamy za sobą, zdaję sobie sprawę, że może to być pewien problem dlatego nie krępujcie się pytać, chętnie wyjaśnię kwestie przygotowania takich wim, niestety dla mnie pewne zagadnienia są oczywiste i nie łatwo mi się wczuć w sytuacje w których może utknąć typowy użytkownik.

    Raz przygotowane pliki wim wystarczą nam na zawsze, nie trzeba będzie do tego wracać (chyba, że zamarzy nam się nowy system, np wersja chińska xp home :) ), teraz powinno już być z górki:

     

    na penie należy przygotować sobie następującą strukturę katalogów (w zestawie startowym z pierwszego postu jest już gotowa):

     

    pen
    - wim
    -- systemy
    -- pliki 
     -- dp

     

    do katalogu "wim" bezpośrednio wrzucamy nasze świeżo przygotowane pliki wim (lub plik),

    w katalogu "systemy" tworzymy pliki konfiguracyjne dla poszczególnych instalacji, wg nich menu.hta automatycznie zbuduje zestaw odpowiednich butonów i list wyboru,

    katalog "pliki\dp" służy do przechowywania skryptów dla programu diskpart które mogą być użyte do automatycznego przygotowania dysku,

    sam katalog "pliki" jest też proponowanym katalogiem dla plików dodatkowych towarzyszących poszczególnym systemom, właściwy katalog określa się jednak bezpośrednio w plikach konfiguracyjnych.

     

    Co tak naprawdę oznaczają pliki towarzyszące (a właściwie katalogi i pliki), otóż są to po pierwsze sterowniki massstorage, po drugie pliki poszczególnych producentów służące do preaktywacji systemu na oryginalnym komputerze, katalog %OEM% towarzyszący plikom odpowiedzi podczas instalacji nienadzorowanej i wreszcie same pliki odpowiedzi.

     

    Pliki konfiguracyjne zostały pomyślane tak, że można z użyciem kilku podstawowych obrazów wim (po jednym dla każdej edycji systemu) przygotować wiele różnych scustomizowanychzestawóów/batonów instalacyjnych, np można stworzyć dwa identyczne zestawy różniące się plikiem odpowiedzi czy też katalogiem $OEM$ ale korzystajace ze wspólnych innych plików a przede wszystkim z tego samego obrazu podstawowego np. "win xp pro pl sp3" .

    Struktura pliku konfiguracyjnego wygląda następująco:

     

    [nazwa]
    Windows XP PRO SP2 PL
    [plik wim]
    windowsy.wim
    [index]
    3
    [pliki oembios]
    wim\pliki\winxp\OEM
    [plik massstorage]
    wim\pliki\winxp\MassStorage
    [pliki oem]
    wim\pliki\winxp\$OEM$
    [nienadzorowana]
    wim\pliki\winxp\unattend_pro.txt
    [key]
    MVF4D-W774K-MC4VM-QY6XY-R38TB

     

    w sekcji [nazwa] mamy tekst który pojawi się na batonie w mwnu,

    w sekcji [plik wim] mamy nazwę pliku zawierającego obraz naszego systemu,

    [index] określa index konkretnego obrazu w pliku wim dla naszego systemu (jeżeli dla każdego systemu stworzymy osobny wim to index będzie zawsze wynosił "1")

    [pliki oembios] - w tej sekcji podajemy pełną ścieżkę (względem naszego pena) do katalogu zawierającego pliki oembios producentów systemów używane do preaktywacji, tą metodą można też dokonać konwersji między wersjami OEM <> VLK <> RETAIL, w zestawie startowym znajduje się przykładowy plik i katalog dla takiej konwersji.

    [plik massstorage] - ścieżka do katalogu zawierającego sterowniki kontrolerów dyskowych (ahci, raid), format tych sterowników opisałem w poście: link, a dokładniejszy sposób przygotowania w poście: link, w zestawie startowym są też przykładowe pliki dla kontrolerów intela i amd (nie najnowsze wersje ale powinny działać i dać pewien pogląd na ich budowę),

    [pliki oem] - ścieżka do katalogu $OEM$, katalog ten w połączeniu z plikiem odpowiedzi dla instalacji nienadzorowanej służy do bardzo zaawansowanych instalacji podczas których chcemy skonfigurować system, zainstalować dodatkowe programy lub sterowniki itp.

    [nienadzorowana] - ścieżka do pliku odpowiedzi dla instalacji nienadzorowanej

    [key] - domyślny klucz instalacyjny którego użycie możemy ustawić w przypadku gdy nie używamy instalacji nienadzorowanej - podany tutaj przykładowy klucz jest kluczem SLP który podaje MS na swoich stronach, można go uzywać zamiennie z każdym kluczem przypisany danemu brandowi

     

    Opis użycia samych opcji zdefiniowanych przez powyższe zmienne jak i sam skrypt menu znajduje się w poście link, nie będę ich tutaj niepotrzebnie dublował.

     

    Wypada troszkę napisać w tym miejscu o obostrzeniach jakie należało przyjąć aby taki zestaw działał:

    po pierwsze - użycie sterowników mass storage bez instalacji nienadzorowanej wymusza małe oszustwo które powoduje, że de facto faza tekstowa instalacji przebiegnie i tak w sposób nienadzorowany (jest to ograniczenie samego instalatora windows)

    po drugie - w przypadku instalacji nadzorowanej tworzy się minimalistyczny plik winnt.sif dzięki któremu jest możliwe w ogóle przeprowadzenie instalacji ze źródła lokalnego, plik taki wygląda następująco:

     

    [data]
    msdosinitiated=1
    floppyless=1
    AutoPartition=1
    UseSignatures=yes
    OriSrc=A:\I386
    OriTyp=5

     

    po trzecie w przypadku własnych plików odpowiedzi powyższą sekcję należy również umieścić ponieważ nasz plik odpowiedzi automatycznie staje się plikiem winnt.sif

    po czwarte w przypadku własnego pliku odpowiedzi nie należy w nim umieszczać sekcji odpowiedzialnej za instalację sterowników massstorage, tą należy dodać korzystając z odpowiedniego katalogu.

     

    Wiele razy odwoływałem się do plików oembios, takie pliki są bardzo przydatne jeśli mamy do czynienia z oryginalnym komputerem (np laptopy), możemy wtedy zainstalować system z kluczem SLP (tak jak to robią producenci) i uniknąć kłopotliwej aktywacji telefonicznej z jaką wiąże się użycie klucza "z naklejki". Pliki oembios dla różnych producentów można znaleźć np w tym miejscu link dla XP (win 2003 wymaga własnych plików tego typu, zakładam że zainteresowane osoby znajdą je bez trudu), w tym miejscu zakładam, że tej funkcjonalności będziecie używać zgodnie z licencją a nie do obchodzenie zabezpieczeń windowsa.

     

    Osoby zainteresowane użyciem katalogu &OEM& zapraszam do zapoznania się z moimi odpowiedziami na posty @GoblinWizard-a, mogą one dać pogląd na to jak potężnym narzędziem był taki zestaw w swoim czasie (dziś xp stracił na znaczeniu ale zestaw nadal jest potężny choć mniej przydatny :) ) - link oraz link

     

    I to tyle jeżeli chodzi o tą sekcję - zapraszam do zadawania pytań i dyskusji.

     

    pzdr

  12. Obiecałem wam wcześniej rozwinięcie idei o zastosowanie skryptów w formacie HTA do budowy "ciekawszych" zestawów z ładnym GUI.

    Trochę to trwało ale pora coś zademonstrować, jest to rozwinięcie idei którą opisywałem wcześniej na poprzednim forum, rozwinięcie ale w kawałkach, mianowicie wersja tam zademonstrowana była multizestawem który mógł zaciemniać całą ideę dlatego postanowiłem go rozbić na mniejsze fragmenty a dopiero na końcu zademonstrować jak z tego uzyskać pełny zestaw.

    Tym razem przedstawię skrypt służący do instalacji systemów z linii NT5 (od 2000 poprzez XP do 2003) z użyciem jako źródła plików wim.

    Jak spreparować same pliki wim oraz odpowiednie katalogi (katalog) przedstawię w odrębnym wątku poświęconym tylko skryptom służącym do instalacji, tutaj natomiast przedstawię sam skrypt i postaram się opisać jego funkcjonalność.

     

     

     

     

    
    <HEAD>
    <TITLE>Instalatory</TITLE>
    
    <HTA:APPLICATION
     APPLICATIONNAME="Instalatory"
     ID="Instalatory"
     BORDER="none"
     INNERBORDER="no"
     CAPTION="no"
     SYSMENU="no"
     SCROLL="auto"
     SINGLEINSTANCE="yes"
     WINDOWSTATE="maximize"
     SHOWINTASKBAR="no"
     CONTEXTMENU="no"
     NAVIGABLE="yes"
     SELECTION="no"/>
    
    <script language="vbscript" type="text/vbscript">
    window.resizeTo 1024,768
    window.focus
    </script>
    
    <style type="text/css">
    
    body {background-image:url('img\winpe.jpg'); background-repeat:no-repeat; background-attachment:fixed; background-position:center; margin:0px;
        width:0%; height:100%; left:0%; top:0%; padding:0px; overflow:hidden; z-index:0; font-family:Arial; font-size:20px; font-weight:bold;}
    
    #TextArea {font-family:Albertus Medium; font-size:20pt; font-weight:bold; text-align:center; position:absolute; overflow:hidden;
             width:100%; height:100%; Left:0%; vertical-align:middle; Top:25%;}
    
    #menu {border-style:none; position:absolute; overflow:auto; top:5%; height:90%; width:90%; left:5%; right:5%; z-index:2;} 
    
    p {position:relative; text-align:center; z-index:0;}
    
    .button {position:relative; width:325px; color:#000000; font-family:Arial; font-size:12px; font-weight:bold;
           border-style:ridge; z-index:2;}
    
    .button2 {position:relative; width:200px; color:#000000; font-family:Arial; font-size:12px; font-weight:bold;
           border-style:ridge; z-index:2;}
    
    h2 {position:relative; text-align:center; z-index:0;}
    </style>
    
    </HEAD>
    
    
    
    <script language="vbscript" type="text/vbscript">
    dim system_install, objShell, objWMIService, strDrive, strSystem, objFso, strName
    dim wim_oembios, wim_massstorage, Wim_name, Wim_index, pliki_oem, plik_unattended, default_key
    
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set objShell = CreateObject("WScript.Shell")
    Set objFso = CreateObject("Scripting.FileSystemObject")
    
    dim arrCommands
    arrCommands = Split(Instalatory.commandLine, "$")
    
    If objShell.Environment("Process").Item("SystemDrive") = "X:" Then
    objShell.Environment("Process").Item("Temp") = "X:\Windows\Temp"
    objShell.Environment("Process").Item("Tmp") = "X:\Windows\Temp"
     If Not objFSO.FolderExists("X:\Windows\System32\config\systemprofile\Desktop") Then
         objFSO.CreateFolder "X:\Windows\System32\config\systemprofile\Desktop" 
     End If
    End If
    
    
    
    
    Sub Window_onLoad
    DataArea.InnerHTML = ""
    TextArea.InnerHTML = ""
    MENU.InnerHTML = ""
    MenuSystem
    End Sub
    
    
    Sub MenuSystem
    Set folder = objfso.GetFolder(arrCommands(1)&"\wim\systemy")
    Set files = folder.Files
     For each folderIdx In files 
       Set objFile = objFSO.OpenTextFile(arrCommands(1)&"\wim\systemy\"& folderIdx.Name,1)
       strName = split(objFile.ReadAll,vbcrlf)
       strinstalki_WIM = strinstalki_WIM & "<input class='button' type='button' value='Zainstaluj "&strName(1)&"' onClick='Install_WIM ""&strName(1)&"",""&strName(3)&"",""&strName(5)&"",""&strName(7)&"",""&strName(9)&"",""&strName(11)&"",""&strName(13)&"",""&strName(15)&""'>    "
       objFile.Close
     Next
    
    strmenu1 = "<p><input class='button2' type='button' value='Partitioner' onClick='partitioner' >    <input class='button2' type='button' value='FreeCommander' onClick='fc'></p>"
    strmenu2 = "<p><input class='button2' type='button' value='Ghost 32' onClick='ghost'>    <input class='button2' type='button' value='Cmd' onClick='cmd'></p>"
    strmenu3 = "<p><input class='button2' type='button' value='Notatnik' onClick='ntp'>    <input class='button2' type='button' value='Taskmgr' onClick='tskmgr'></p>"
    strmenu5 = "<p><input class='button2' type='button' value='Quit' onClick='wyjscie(1)'>    <input class='button2' type='button' value='Restart' onClick='wyjscie(2)'></p>"
    
    MENU.InnerHTML = "<h2>Instalki oparte na pliku WIM</h2>" & "<p>" & strinstalki_WIM & "</p>" & "<h2>Narzędzia</h2>" & strmenu1 & strmenu2 & strmenu3 & strmenu5
    End Sub
    
    Sub Install_WIM(system,arg_1,arg_2,arg_3,arg_4,arg_5,arg_6,arg_7)
    
    Window.resizeTo 800,350
    MENU.InnerHTML = ""
    DataArea.InnerHTML = ""
    TextArea.InnerHTML = ""
    
    On Error Resume Next
    Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = 3 AND DeviceID <> 'x:' AND DeviceID <> '" & arrCommands(1) & "'")
    
    For Each objDisk in colDisks
    strBody4 = strBody4 & "<option value='"& objDisk.DeviceID &"'>"& objDisk.DeviceID &"</option>"
    Next
    
    set colSubfolders = objWMIService.ExecQuery("Associators of {Win32_Directory.Name='"&arrCommands(1)&"\"&arg_3&"'} Where AssocClass = Win32_Subdirectory ResultRole = PartComponent")
     For Each objFolder in colSubfolders
    strBody5 = strBody5 & "<option value='"&arrCommands(1)&"\"&arg_3&"\"&objFolder.fileName&"'>"& objFolder.fileName &"</option>"
     Next
    
    Set colSubfolders = objWMIService.ExecQuery("Associators of {Win32_Directory.Name='"&arrCommands(1)&"\"&arg_4&"'} Where AssocClass = Win32_Subdirectory ResultRole = PartComponent")
     For Each objFolder in colSubfolders
    strBody6 = strBody6 & "<option value='"&arrCommands(1)&"\"&arg_4&"\"&objFolder.fileName&"'>"& objFolder.fileName &"</option>"
     Next
     
    Set folder = objfso.GetFolder(arrCommands(1)&"\wim\pliki\dp")
    Set files = folder.Files
        For each folderIdx In files 
    strBody8 = strBody8 & "<option value='"&folderIdx.Name&"'>"& folderIdx.Name &"</option>"
        Next
     
    
    str0 = "<option value='null'>null</option>"
    str1 = "<span style='display:inline width:60px; position:absolute; top:15%; left:5%'><select size='1' name='AvailableDrives'>" 
    str2 = "<input class='button' type='button' value='Potwierdź wybór' onClick='sys_inst_WIM' style='left:25%; top:70%; width:125px;'>"
    str3 = "<input class='button' type='button' value='Rezygnuję' onClick='Cancel' style='left:45%; top:70%; width:125px;'>"
    str4 = "<span style='display:inline width:60px; position:absolute; top:22%; left:5%'><select size='1' name='AvailableOEMS'>" 
    str5 = "<span style='display:inline width:60px; position:absolute; top:45%; left:5%'><input type='checkbox' name='chkbox1' checked='True'>  Nienadzorowana</span>"
    str6 = "<span style='display:inline width:60px; position:absolute; top:29%; left:5%'><select size='1' name='AvailableMASS'>" 
    str7 = "<span style='display:inline width:60px; position:absolute; top:55%; left:5%'><input type='checkbox' name='chkbox2'>  Użyj katalogu $OEM&</span>"
    str9 = "<span style='display:inline width:60px; position:absolute; top:65%; left:5%'><input type='checkbox' name='chkbox3'>  Autorestart</span>"
    str8 = "<span style='display:inline width:100px; position:absolute; top:36%; left:5%'><select size='1' name='AvailableDP'>"
    str10 = "<span style='display:inline width:60px; position:absolute; top:75%; left:5%'><input type='checkbox' name='chkbox4'>  Użyj klucza domyślnego</span>"
    
    DataArea.InnerHTML = "<h2>Instalacja WIM " & system & "</h2>" & str1 & str0 & strBody4 & "</select>" & "  Proszę wybrać partycę docelową</Span>" & str4 & str0 & strBody5 & "</select>" & "  Proszę wybrać dostawcę OEM</Span>"  & str6 & str0 & strBody6 & "</select>" & "  Proszę wybrać Sterowniki MassStorage</Span>" & str5 & str8 & str0 & strBody8 & "</select>" & "  Proszę wybrać plik konfiguracji dysku</Span>" & str7 & str9 & str10 & str2 & str3
    
    strSystem = system
    Wim_name = arg_1
    Wim_index = arg_2
    wim_oembios = arg_3
    wim_massstorage = arg_4
    pliki_oem = arg_5
    plik_unattended = arg_6
    default_key = arg_7
    End Sub
    
    Sub sys_inst_WIM
     If AvailableDP.Value <> "null" Then
       strDrive = "V:"
     ElseIf AvailableDrives.Value = "null" Then
       Func_Back_WIM
       Exit Sub
     Else
       strDrive = AvailableDrives.Value
     End If
       strMassStorage = AvailableMASS.Value
       strOEM = AvailableOEMS.Value
       strDP = AvailableDP.Value
     if chkbox1.Checked then
       chkbox1_WIM = "TAK"
       Set objFile = objFSO.OpenTextFile(arrCommands(1)&"\"&plik_unattended,1,true)
       strUnAtt = objFile.ReadAll
       objFile.Close
     Else
      if chkbox4.Checked then
        chkbox4_WIM = "TAK"
        strdefkey = "[userdata]" & vbCrLf & "productid=" & default_key & vbCrLf & "productkey=" & default_key & vbCrLf
      end if
       strUnAtt = "[data]"  & vbCrLf & "msdosinitiated=1" & vbCrLf & "floppyless=1" & vbCrLf & "AutoPartition=1" & vbCrLf & "UseSignatures=yes" & vbCrLf & "OriSrc=A:\I386" & vbCrLf & "OriTyp=5" & vbCrLf 
       strnonunat = "[unattended]" & vbCrLf & "OemPreinstall=Yes" &vbCrLf& "DriverSigningPolicy=Ignore" &vbCrLf
     end If
     if chkbox2.Checked then
       chkbox2_WIM = "TAK"
     end if
     if chkbox3.Checked then
       chkbox3_WIM = "TAK"
     end if
     DataArea.InnerHTML = ""
     TextArea.InnerHTML = ""
     window.resizeTo 768,120
     TextArea.InnerHTML = "Proszę czekać,<br>trwa Instalacja " & strSystem 
    If strdp <> "null" Then
       objShell.run ("%comspec% /c diskpart /s "&chr(34)&arrCommands(1)&"\wim\pliki\DP\"&strDP&chr(34)),0,true
    Else
      set colVolumes = objWMIService.ExecQuery("select * from Win32_Volume Where Name = '"&strDrive&"\\'")
       For Each objVolume in colVolumes
        objVolume.Format "NTFS",True,,"",False
    
    If Not objFSO.FileExists("x:\windows\temp\dp.txt") Then
    Set objFile = objFSO.CreateTextFile("x:\windows\temp\dp.txt", True)
    objFile.WriteLine "select volume " & strDrive & vbCrLf & "active" & vbCrLf & "exit"
    objFile.close
    End If
    objShell.Run ("%comspec% /c diskpart /s x:\windows\temp\dp.txt"),0,true
    objFSO.DeleteFile "x:\windows\temp\dp.txt"
    
      Next
    End If
     objShell.run ("bootsect.exe /nt52 " & strDrive & " /force /mbr"),0,true
     objShell.run ("imagex.exe /apply "&arrCommands(1)&"\wim\"&Wim_name&" "&Wim_index&" "&strDrive),0,true
       Set objFile = objFSO.CreateTextFile(strDrive&"\$WIN_NT$.~BT\winnt.sif",true)
       objFile.Write strUnAtt & strdefkey
       objFile.Close
     'objShell.run ("wpeutil.exe reboot"),0,false
     if chkbox2_WIM = "TAK" then
         objFso.CopyFolder arrCommands(1)&"\"&pliki_oem, strDrive&"\$WIN_NT$.~LS\$OEM$", True
     end if
     If strOEM <> "null" Then
         objFSO.CopyFile strOEM&"\*", strDrive&"\$WIN_NT$.~LS\I386\", True
     End IF
    
     If strMassStorage <> "null" Then
       Set objFile = objFSO.OpenTextFile(strMassStorage&"\untd.txt",1,true)
       strMass = objFile.ReadAll
       objFile.close
       Set objFile = objFSO.CreateTextFile(strDrive&"\$WIN_NT$.~BT\winnt.sif",true)
       objFile.Write strUnAtt & strnonunat & strdefkey & strMass
       objFile.Close
     If Not objFso.FolderExists(strDrive&"\$WIN_NT$.~LS\$OEM$") Then
      Set f = objFso.CreateFolder(strDrive&"\$WIN_NT$.~LS\$OEM$")
     End If
      Set f = Nothing
     objFso.CopyFolder strMassStorage&"\txtsetup", strDrive&"\$WIN_NT$.~LS\$OEM$\TEXTMODE", True
     objFso.CopyFolder strMassStorage&"\txtsetup", strDrive&"\$WIN_NT$.~BT\$OEM$", True
     End If 
    
    IF chkbox3_Wim = "TAK" then
       objShell.Run ("Wpeutil Reboot"),0,false
    End If
     
     window.resizeTo 1024,768
     MenuSystem
     DataArea.InnerHTML = ""
     TextArea.InnerHTML = ""
    End sub
    
    Sub Func_Back_WIM
    DataArea.InnerHTML = ""
    TextArea.InnerHTML = ""
    window.resizeTo 512,120
    strbck1 = "<input class='button' type='button' value='Wróć' onClick='Install_WIM ""&strSystem&"",""&Wim_name&"",""&Wim_index&"",""&wim_oembios&"",""&wim_massstorage&"",""&pliki_oem&"",""&plik_unattended&"",""&default_key&""' style='left:5%; top:65%; width:125px;'>"
    strbck2 = "<input class='button' type='button' value='Diskpart' onClick='diskpart' style='left:10%; top:65%; width:125px;'>"
    strbck3 = "<input class='button' type='button' value='Rezygnuję' onClick='Cancel' style='left:15%; top:65%; width:125px;'>"
    TextArea.InnerHTML = "Nie wybrano partycji docelowej"
    DataArea.InnerHTML = strbck1 & strbck2 & strbck3
    End Sub
    
    
    
    sub cancel
    DataArea.InnerHTML = ""
    TextArea.InnerHTML = ""
    window.resizeTo 1024,768
    MenuSystem
    end sub
    
    
    
        
    Sub ghost
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono Ghost 32"
    objShell.Run (arrCommands(1) & "\tools\ghost32.exe -prefos"),0,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    
     
    
    
    Sub ntp
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono Notatnik"
    objShell.Run ("notepad"),1,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    Sub cmd
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono Wiersz Poleceń"
    objShell.Run ("%comspec%"),1,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    Sub partitioner
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono DiskPartitioner"
    objShell.Run (arrCommands(1) & "\tools\DiskPartitioner\DiskPartitioner.exe"),0,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    Sub FC
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono FreeCommander"
    objShell.Run (arrCommands(1) & "\tools\FreeCommanderPortable\FreeCommanderPortable.exe"),0,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    Sub tskmgr
    MENU.InnerHTML = ""
    window.resizeTo 512,80
    TextArea.InnerHTML = "Uruchomiono Menedżer zadań"
    objShell.Run ("taskmgr"),1,True
    window.resizeTo 1024,768
    MenuSystem
    TextArea.InnerHTML = ""
    End Sub
    
    sub wyjscie(str_str)
    If str_str = 1 Then
    self.close()
    ElseIf str_str = 2 Then
    objShell.Run ("Wpeutil Reboot"),0,false
    End If
    end sub
    
    
    </script>
    
    <body id=body>
    
    <span id=menu></span>
    
    <span id=DataArea></span>
    <span id=TextArea></span>
    
    </body>                                                  
    

     

     

     

     

    wersje na zewnętrznych hostach:

    menu_min.hta lub menu_min.hta

     

    plik należy wrzucić do katalogu ze skryptami, opcjonalnie można w tym katalogu założyć podkatalog img i umieścić w nim plik winpe.wim o rozmiarze 1024x768 który automatycznie stanie się tłem dla odpalanego GUI.

     

    Uwaga - skrypt ten uruchamiamy inaczej niż wcześniejsze:

    po pierwsze należy podać pełną nazwę z rozszerzeniem

    po drugie należy podać argument w formacie - $ "litera przypisana penowi"

     

    Przykład - dolar jest obligatoryjny, potrzebny do zadziałania skryptu natomiast zamiast litery można podać zmienną którą ustawia skrypt startowy w winpe:

     

    menu_mini.hta $%litera%

     

    menu_mini.hta jest propozycją, plik można nazwać w dowolny sposób.

     

    Jak to wygląda po odpaleniu:

    menu główne - tutaj widać 6 systemów, ilość zależy od zawartości katalogu z konfigami który będzie opisany w oddzielnym wątku i jest generowana automatycznie przy starcie menu:

    obrazzeschowka.th.png

     

    a tutaj samo podmenu instalacji systemów z pokazanym wyborem poszczególnych opcji:

    obrazzeschowka5.th.pngobrazzeschowka4.th.pngobrazzeschowka3.th.pngobrazzeschowka2.th.pngobrazzeschowka1.th.png

     

    Poszczególne opcje pozwalają na (patrząc od góry):

    1' wybór partycji docelowej dla instalowanego systemu, partycja zostanie sformatowana i ustawiona jako aktywna, zostanie też ustawiony odpowiedni botsektor.

    2' pozwala wybrać pliki służące do preaktywacji systemu na sprzęcie danego producenta (pliki oczywiście muszą się znajdować w odpowiednim katalogu), w ten sposób można również dokonać w locie konwersji mędzy systemem OEM <> VLK

    3' pozwala wybrać sterowniki kontrolera dysków (ahci, raid) jeżeli są dostępne w odpowiednim katalogu, wymagany format jest identyczny jek ten opisany w poście skrypt do instalacji xp

    4' pozwala na ustawienie dysku z użyciem skryptu dla diskparta, jeżeli ta opcja zostanie wybrana ignorowany jest wybór z punktu 1', w tym przypadku windows jest instalowany zawsze na partycji o literze v: co należy w skryptach uwzględnić

    teraz checkboxy:

    5' jeżeli jest zaznaczony (taka jest wersja domyślna) podczas instalacji uzywany jest plik odpowiedzi dla instalacji nienadzorowanej w przeciwnym wypadku zostanie wygenerowany plik w wersji minimalistycznej potrzebnej aby instalacja w ogóle była możliwa - obostrzenia zostaną opisane w zapowiadanym temacie dotyczącym samej instalacji.

    6' określa czy podczas instalacji ma zostać uzyta zawartość katalogu $OEM$, z pomocą tego katalogu (i pliku odpowiedzi dla instalacji nienadzorowanej) można bardzo rozbudować i scustomizować instalację systemu, można zainstalować sterowniki, programy, dokonać zmian w rejestrze itp. itd. - odsyłam do moich odpowiedzi na posty @GoblinWizard-a - link oraz link - temat jest bardzo obszerny i nie zamierzam się nad nim pastwić głębiej ze względu na ogólne zanikanie potrzeby skupiania się na Win XP (i pochodnych)

    7' zaznaczenie opcji autostart spowoduje automatyczne zresetowanie się komputera po pierwszej fazie (przerzuceniu plików na partycję), właściwa faza instalacji nastąpi po restarcie (przydatne przy nienadzorowanej, po ustawieniu opcji można iść na kawę i wrócić kiedy system już będzie odpalony i gotowy do pracy).

    8' Nowa opcja która pozwala na użycie podczas instalacji wcześniej zdefiniowanego klucza produktu jeżeli nie decydujemy się na instalację nienadzorowaną a chcemy jednak sobie troszkę zautomatyzować.

     

    Jak widać memy wiele możliwości do wykorzystania (zwłaszcza przez osoby bardziej zaawansowane), część z nich bardzo się przyda osobom które zajmują się grzecznościowo czy zawodowo instalacją na wielu sprzętach, dla domorosłych "instalatorów" to raczej ciekawostka choć nadal do wykorzystania, ja uważam że skorzystanie z winpe jest najlogiczniejszą i najprostszą metodą na instalację systemów z tej rodziny, nie przerabiamy plików instalacyjnych, nie dodajemy żadnych sterowników ramdysku, fake sterowników itp. itd. mających ogłupić instaler na dodatek dostajemy dość sporą uniwersalność.

     

    Oczywiście nic nie jest idealne, największym brakiem tej wersji instalatora jest jej przywiązanie do konkretnej (jednej) partycji która jest docelową dla instalacji i automatycznie staje się też aktywną, można to oczywiście obejść ale za bardzo (wg mnie) skomplikowałoby to sam skrypt a zapotrzebowanie na takie cuś jest chyba minimalne (a może jednak - proszę o głosy/opinie w tej sprawie), być może wrócę do tego przy "remasteringu" skryptu dla instalacji z folderu dystrybucyjnego.

    Instalacja na dwie partycje nadal jest oczywiście możliwa, należy tylko ręcznie wykonać kilka zabiegów, po pierwsze nie używamy skryptu ustawiającego dysk tylko przygotowujemy sobie dysk wcześniej, po drugie po fazie kopiowania plików (czyli autorestart musi być wyłączony) poprawiamy atrybuty (ustawiamy właściwą partycję jako aktywną) i instalujemy botsektor na tej właściwej partycji, po trzecie w końcu kopiujemy (przenosimy) na tą partycję pliki startowe windowsa czyli boot.ini, ntdetect, ntldr (nie jestem pewny czy txtsetup.sif również nie powinien się na niej znaleźć, jak sprawdzę dam znać), być może trzeba będzie też wyedytować docelowe boot.ini.

     

    Po opis przygotowania samego zestawu zapraszam do wątku Instalacja systemów z pendriva GUI oparte o HTA do instalacji z użyciem WinPE, dla pena lub sieci

     

    pzdr

  13. Instalacja systemów z pendriva

    GUI oparte o HTA do instalacji z użyciem WinPE, dla pena lub sieci

     

     

    W tym wątku opiszę jak zbudować sobie zestaw do instalacji systemów Microsoftu z wykorzystaniem środowiska WinPE.

    Nie będzie to typowa instalacja polegająca na przeklepaniu komend tylko zautomatyzowane menu dostosowujące się w locie do tego co stworzymy na penie, założeniem jest jak największa uniwersalność tego środowiska.

    Zasadniczo jest/będzie to zestaw dla osób które wykonują wiele instalacji (powiedzmy zawodowo) na różnych komputerach różnych brandów, to im on się przyda najbardziej co nie znaczy, że inni nie znajdą w nim nic dla siebie.

    Niektórzy rozpoznają w tym wątku moją pracę z poprzedniego forum, różnica polega na tym, że tam cykl powstawał i ewoluował razem z zestawem - teraz zestaw jest zasadniczo gotowy, nie trzeba wymyślać koła od nowa a co za tym idzie powinien być o wiele bardziej przejrzysty.

    Dodatkowo postanowiłem cykl podzielić na trzy fragmenty

    1 - instalacja systemów NT5 z plików wim (nt5 = win 2000, xp do 2003)

    2 - instalacja systemów NT6 z użyciem standardowego setupu (nt6 - vista do server 2008 r2)

    3 - instalacja systemów NT5 z folderu dystrybucyjnego (ten temat z zalożenia potraktuję trochę po macoszemu, byle by był jako komplet i odpowiednik pracy z poprzedniego forum)

     

    Na końcu przedstawię połączenie tych trzech zestawów w jedną spójną całość.

    W międzyczasie przedstawię również zestaw startowy używających tej samej konfiguracji do zastosowania w środowisku sieciowym.

     

    Sam wątek wiele łączy z opisanym już na forum wątkiem WinPE do celów diagnostyczno naprawczych. w wielu miejscach będą się one przenikać oraz odwoływać wzajemnie do siebie, sam zestaw startowy zbudowany będzie w identyczny sposób a jedyna różnica będzie w skrypcie startującym który tutaj zamiast konsoli odpali menu.

     

    A oto sam zestaw do budowy pendriva startowego - w zestawie znajdują się pliki o długości zerowej które należy zastąpić ich właściwymi odpowiednikami, zostały umieszczone w celach poglądowych, ze względu na prawa firm trzecich nie mogłem ich umieścić w wersji docelowej.

    instalki_winpe_wim lub instalki_winpe_wim

     

    Podstawy zestawu, głównie środowisko WinPE nie będą się zmieniały, zmianie będzie ulegać sam skrypt menu.hta.

    Osobom które będą próbowały zbudować zestaw w systemie xp (2003 itp) polecam przeczytanie postu jak zbudować pen boot w xp - niestety skrypt automatyczny będzie sprawiał w tym systemie problemy a i formatowanie pena może mieć znaczenie.

     

    Uwaga!!

    W poscie #7 link znajduje się właściwy skrypt zawierający pełną funkcjonalność wszystkich instalatorów

     

    pzdr

  14. Klucz z nalepki nie jest tym użytym podczas instalacji przez producenta tutaj mamy właśnie do czynienia z kluczem SLP który (w połączeniu z autoryzowanym sprzetem) daje możliwość automatycznego aktywowania sytemu bez potrzeby kontaktowania się z MS (czy to internetowo czy telefonicznie).

    Mechanizm wprowadzono dlatego, że przeprowadzanie aktywacji każdej wyprodukowanej maszyny a zwłaszcza wpisanie do każdej jej własnego klucza byłoby w procesie produkcji bardzo czaso i prcochłonne.

     

    Kluczowi SLP zawsze towarzyszy certyfikat (plik licencji) który należy zainstalować odpowiednim poleceniem systemowym.

     

    Nie ma też potrzeby odwoływania się do narzędzi zewnętrznych celem odczytania klucza - wystarczy skrypt vbs:

     

    CONST HKEY_LOCAL_MACHINE = &H80000002
    CONST SEARCH_KEY = "DigitalProductID"
    Dim arrSubKeys(0,1)
    
    foundKeys = Array()
    iValues = Array()
    arrSubKeys(0,0) = "Microsoft Windows Product Key"
    arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    
    
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    
    
     oReg.GetBinaryValue &H80000002, arrSubKeys(x,1), SEARCH_KEY, arrDPIDBytes
     If Not IsNull(arrDPIDBytes) Then
      call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
     End If
    
    
    
    Function decodeKey(iValues, strProduct)
     
    
     arrDPID = Array()
    
     For i = 52 to 66
      ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
      arrDPID( UBound(arrDPID) ) = iValues(i)
     Next
      
    
     arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9")
     
    
     For i = 24 To 0 Step -1
      k = 0
      For j = 14 To 0 Step -1
       k = k * 256 Xor arrDPID(j)
       arrDPID(j) = Int(k / 24)
       k = k Mod 24
      Next
      strProductKey = arrChars(k) & strProductKey
      If i Mod 5 = 0 And i <> 0 Then strProductKey = "-" & strProductKey
     Next
     
     ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
     foundKeys( UBound(foundKeys) ) = strProductKey
     strKey = UBound(foundKeys)
     MsgBox strProduct & vbNewLine & vbNewLine & foundKeys(strKey)
    End Function
    
    

     

    a jeżeli już to polecam narzedzie firmy Nirsoft.

     

    Plik licencji w 95% przypadków znajdziemy w katalogu %windir%\system32\oem, będzie to plik z rozszerzeniem "XRM-MS".

     

    Sam klucz jak i właściwą ścieżkę do pliku licencji często można też znaleźć w pliku odpowiedzi dla instalacji nienadzorowanej który najczęściej pozostaje w katalogu %windir%\Panther, chodzi o plik unattend.xml (windows siedem stara się klucz zatrzeć ale rożni producenci stosuję niestandardowe metody podawania go w pliku odpowiedzi więc zawsze warto zajrzeć).

     

    Podstawowa zabawa to skompletowanie sterowników, nie zawsze są dostępne od ręki, tu jako wzór można podać Samsunga który wszystkie sterowniki (jak też całe dodatkowe oprogramowanie) daje w osobnym katalogu ukrytym na partycji recovery (ale zdaje się, że fabryczne oprogramowanie do recovery pozwala je przekopiować w inne miejsce).

     

    Jest to trochę zabawy, dla siebie na pewno warto, efekt może być dość oszałamiający, ostatnio robiłem dość mocny sprzęt (z procesorem i7) i nawet w tym przypadku laptop dostał przyjemnego kopa, czy warto dla kogoś to już inna kwestia (zwłaszcza jeżeli osobnik i tak zainstaluje wszystko jak leci z następnego numeru "Niezbędnika") :).

  15. Generalnie aby można hotplug włączyć oprócz obsługi powyższego przez bios musi istnieć wbudowana obsługa w sterownikach. O ile w systemach 64bit sterowniki tego nie obsługują o tyle w przypadku systemu 32bit nie powinno być problemu, warunkiem jest instalacja firmowych sterowników amd (te od ms nie będą obsługiwać tej funkcjonalności), możlwe również, że odpowiednią funkcję trzeba wymusić przez rejestr.

    Przeczytaj ten wątek, dotyczył podobnego przypadku (tyle, że w drugą stronę):

    link

     

    pzdr

  16. próbowałam też tego, aktualizacja dotyczy aplikacji zainstalowanej w samym systemie nie ingeruje w partycję recovery.

     

    Zassałem tą aktualizację i rozpakowałem, w środku jest plik lrs.wim.

    Po co jeżeli to nie jest update ingerujący w partycję recovery?

     

    pzdr

  17. Tak wczytując się dokładniej w pytanie kolegi @Taktyk dochodzę do wniosku, że on chce naciskać F11 już będąc w menu BCD.

    Nie - to w ten sposób nie działa - klawisz przytrzymujemy podczas startu komputera w fazie zaraz po post teście ale przed pojawieniem się menu (praktycznie zaraz po włączeniu komputera do momentu zaistnienia wymuszonego zdarzenia), klawisz w customactions przerywa domyślną sekwencję botowania zastępując ją akcją przypisaną właśnie w tej zmiennej.

     

     

    Właśnie sprawdziłem na świeżej instalce i F11 oraz F12 działają bez problemu.

    pzdr

  18. Nie można takiej partycji ukrywać dosłownie, tzn ani id dla typowej hidden (id17) ani OEM (id12, id27) bo po prostu system nie wystartuje, przywita nas ładny bsod, natomiast można po prostu punktu instalacji (litery) nie przydzielać w danym systemie dla tego drugiego, na upartego można też zablokować dany wolumin przez rejestr aby takiej litery się przypisać nie dało (nie wiem czy gra warta świeczki), można też (co akurat w przypadku Ultimate nie jest złym pomysłem) zainstalować ten drugi system do pliku vhd, wtedy żadna dodatkowa partycja nie będzie widoczna w systemie "odkrytym" bo po prostu nie będzie fizycznie istnieć na dysku, pojawi się za to duży plik który można schować w jakimś katalogu.

     

    Jeżeli chodzi o F11 i F12 to można je przypisać bez problemu, nie wykluczone, że na danym sprzęcie wchodzą w konflikt z innymi funkcjami obsługiwanymi przez bios, takie oczywistości jak bootmenu wykluczam, raczej byście to zauważyli ale np. zdarza się pod f12 wymuszenie botowania z sieci przez PXE (jeśli taka opcja jest włączona w biosie co nie znaczy, że jej wyłączenie zwalania klawisz).

     

    Ja osobiście proponuję zawsze klawisze skrajne, na typowej klawiaturze desktopa są to np F1, F4, F9 i F12 (zależy oczywiście od konstrukcji).

     

    ps @Rafael22peb, człowiek chce sobie przypisać jednocześnie klawisz reco i drugiego systemu wtedy musi użyć takiej formy jaką podałem wcześniej, ja tak robię z XP którego niektórzy chcą zachować, normalnie startuje W7 a jak przytrzymasz np. F3 to masz XP (bez niepotrzebnego menu), reco standardowo u mnie pod F9.

    pzdr

  19. to dlaczego w momencie kiedy pożyczyłam Windowsa 7 home premium i zainstalowałam u siebie to mój klucz nie pasował?

     

     

    Co znaczy "nie pasował", jaki komunikat i w którym momencie, piszesz o kluczu z nalepki licencyjnej czy o tym na którym był zainstalowany oryginalny system fabryczny (czyli 27GBM-Y4QQC-.....).

    Sprawdź źródło, prawidłowy polski win 7 (na płycie zawiera wszystkie wersje nie tylko hp) powinien mieć plik install.wim o sumie kontrolnej:

     

    wersja 32bit MD5 - 0320969D15AAF0FCD6AE0276F1090218

    wersja 64bit MD5 - A01C6344C1631335B7CE6CE6B7608AB2

     

    Oczywiście dotyczy to czystych wersji (jakie można kupić w sklepie czy zassać z MSDN), w przypadku nośników OEM Recovery producenci mogli ingerować w ten plik (np wstrzyknąć poprawki czy sterowniki) ale nie powinno to rzutować w żadnym razie na stronę licencyjno-aktywacyjną.

     

    pzdr

  20. Pomijając aspekty moralno-prawne takiego zestawu oczywiście da się to zrobić.

    Ukryty system nie może się znajdować na liście menu (najlepiej robić tak aby menu się w ogóle nie pojawiało) więc albo trzeba go dopisać bez dodawania do "displayorder" albo rzeczony wpis usunąć ale do tego chyba doszedłeś. Wydaje mi się, że mogłeś popełnić błąd w customactions, aby przypisać więcej niż jeden klawisz należy komendę bardziej rozbudować:

     

    bcdedit /set {bootmgr} customactions 0x0001000043000001 0x0000000054000001 0x0001000085000001 0x0000000054000002

    bcdedit /set {bootmgr} custom:0x0000000054000001 {id1}

    bcdedit /set {bootmgr} custom:0x0000000054000002 {id2}

     

     

    gdzie id1 - identyfikator wpisu dla recovera a id2 - dla ukrytego systemu

     

    pzdr

  21. gdy mamy ustawiony poprawnie początek to Total i tak się nie będzie zgadzał, najbliżej udało mi się ustawić 409601

     

    Po raz kolejny - czy próbowałaś w drugą stronę? Czyli ustawiamy rzeczywiste wartości w pliku info:

     

    [info]
    BakTime=2009-10-25 12:03
    FacBak=1
    T12Layout=1
    BootType=2
    DiskCount=1
    ImageCount=2
    DataPart=1
    MBR=MBR.okr
    Success=1
    [boot]
    Format=NTFS
    Lable=
    Begin=2111
    Total=409538
    Used=65872
    Image=Boot.okr
    [OS]
    Format=NTFS
    Lable=
    Begin=411649
    Total=530354177
    Used=31119504
    Image=OS.okr
    [service]
    Format=NTFS
    Lable=LENOVO_PART
    Begin=594199552
    Total=30942896
    

     

    Niemożność ustawienia tych samych wartości jakie występowały oryginalnie może sugerować też niezgodność wielkości jednostki alokacji.

     

    Tak jak mówisz pozostaje postawienie systemu od nowa bez zastosowań Lenovo i przede wszystkim kupno Windowsa bo w tej chwili korzystam z wersji trial (podczas tych wszystkich operacji oryginalny zainstalowany system przepadł)

     

     

    Hmm, a czy to oznacza, że licencja też przepadła? Chyba raczej nie. Wystarczy jakikolwiek nośnik + oryginalny klucz (choć do instalacji lepiej użyć klucza SLP) i system jest jak najbardziej zgodny z licencją, system jest integralną częścią zestawu (zresztą powinien być wymieniony na fakturze razem z laptopem lub w jego nazwie), nie ma potrzeby nic dokupować, następna rzecz - kupno systemu bez komputera = zakup wersji retail (zwanej czasem BOX) a to dość kosztowne, zakup wersji OEM w tym przypadku i tak równa się złamanie licencji.

     

    pzdr

×
×
  • Dodaj nową pozycję...