Crearea unui program de instalare, World of Players RU

Membru pe forum

Aș dori să vorbesc despre construirea de instalatori cu drepturi depline folosind medii de programare improvizate. De obicei, sarcina de a crea un program de instalare se rezumă la utilizarea diferitelor programe (cum ar fi Nsis, Inno etc.), care, de regulă, au propriul limbaj de scripting încorporat. Dar: 1) nu există o dorință specială de a studia scenarii specifice; 2) funcționalitatea instalatorilor este încă oarecum limitată în ceea ce privește capacitatea de a gestiona instrumentele OS, deși la despachetarea unui număr foarte mare de fișiere, utilizarea sistemelor de scripting poate fi mai benefică.

Acum să trecem de la teorie la practică. Voi arăta un exemplu de scriere a unui program de instalare în mediul Borland Delphi. Esența acestei metode este de a „pune” fișierele despachetate într-un fișier de resurse (fișier RES), care este apoi conectat la program în etapa de compilare în mediul Delphi. Exemplul de mai jos despachetează cinci imagini JPEG (index1.jpeg, .index5.jpeg) într-un director la alegerea utilizatorului. Procesul de creare este reprezentat de un set de pași.

Pasul 1.Trebuie să creăm un fișier (să fieInstall.rc) care listează în mod specific fișierele de dezambalat. Acest fișier arată astfel:

Aici, primul identificator indică numele (alias) pentru resursă, sub care resursa va fi vizibilă pentru program. Al doilea parametru este tipul de resursă, trebuie să avem EXEFILE. Al treilea parametru este numele fișierului.

Pasul 2.FișierulInstall.rccreat la pasul anterior trebuie să fie trecut acum ca singur parametru la compilatorul de resursebrcc32.exe, care se află în folderul\ Binnu este greu de găsit. Este recomandabil să copiați însușibrcc32.exe, scriptulInstall.rcși fișierele care urmează să fie împachetate într-un singur folder (pentrusuntem imagini JPEG). Apoi rulăm comanda în consolă

. Ieșirea esteInstall.res. Acesta este fișierul de care avem nevoie. Copiați-l în folderul cu proiectul de instalare Delphi.

Pasul 3.Lucrul cu proiectul Delphi. Fișierul de resurse rezultatInstall.restrebuie să fie conectat la programul nostru, iar acest lucru se face prin inserarea directiveiîn fișierul principal al proiectului - în exemplul nostru, acesta este fișierulProiect1.dpr. Acum scriem o procedură pentru extragerea fișierelor sursă din resursele programului. O posibilă implementare a unei astfel de proceduri ar putea arăta astfel:

Parametrii formali ai acestei proceduri au urmatoarea semnificatie:ResType– tipul de resursa preluata, pentru noi este EXEFILE;ResName– identificatorul de resursă din program, vezi descrierea structurii fișieruluiInstall.rc;ResNewNameeste calea completă către fișierul în care va fi rescrisă această resursă.

Direct pentru lucrul cu resursa, se folosește clasa încorporată a sistemului Delphi -TResourceStream, care oferă toate lucrările „murdare” și de rutină cu resursa. În VC++, apropo, nu există un astfel de lux și ar trebui să utilizați funcțiile WinApi pentru a lucra cu resurse. Extragerea fișierelor folosind proceduraExtractResfuncționează astfel:

ProceduraExtractextrage toate fișierele într-un folder de utilizator. Detalii despre designul vizual al proiectului, desigur, sunt omise aici, deoarece, cel mai probabil, aceasta este o chestiune de gust personal.

Mai jos, în arhiva RAR, proiectul descris este atașat în stare de funcționare completă. Scrieți dacă aveți întrebări. Dau și o captură de ecran a ceea ce s-a întâmplat ca urmare (Screen.JPG).(C) siryksv, 2009-2010.

instalare

Membru pe forum

Wallerstein

Membru pe forum
Membru pe forum
Membru pe forum

Ar putea ajuta. dacă utilizați metoda de mai sus, veți împinge toate fișierele din resursele jocului în resursele unui fișier exe. Puteți face un instalator în acest fel. wow, e prea greu

siryksvTare, Temko. Cu aproximativ 5 ani în urmă, Mlyn a colectat aceste informații pas cu pas. nostalgie dreaptă

Membru pe forum

Voi continua subiectul despre crearea de instalatori. Poate cineva va avea nevoie.

Deci, crearea unui program de instalare în Visual C++. Pentru a scrie exemplul, am folosit VisualC++ 6 „clasic”, deși tehnologia pentru crearea acestui program în alte versiuni ale compilatorului (de exemplu, 2003) nu va diferi prea mult.

Pasul 1.Creați un proiect MFC gol (File->New->MFC AppWizard (Exe)) numit VCInstall. Deoarece, în principiu, avem nevoie de o singură fereastră, în procesul de lucru cu vrăjitorul, selectăm tipul de aplicație bazată pe Dialog. Toate celelalte setări pot fi lăsate ca implicite. Las constiinta utilizatorului designul ferestrei de instalare, ceea ce am facut eu insumi se vede pe ecran in aplicatii. Cu toate acestea, cea mai importantă componentă a formularului nostru este butonul etichetat „Instalare”.

Pasul 2.Adăugați resurse. Pentru a face acest lucru, selectați Insert->Insert Resource (sau Ctrl+R) din meniul principal și apăsați butonul Import pentru a importa resursa. În fereastra care apare, selectați fișierele necesare, în plus, ar trebui să dezactivați și detectarea automată a resursei prin comutarea elementului „Open As” la valoarea „Custom”. După selectarea fișierelor de importat, mediul vă va solicita să specificați tipul de resurse. În fereastra Resource Type care apare, introduceți „EXE” (fără ghilimele). Va fi creată o nouă resursă de tip „EXE” sau mai multe resurse dacă au fost selectate mai multe fișiere. EditareProprietățile resursei și schimbarea ID-ului acesteia se face făcând clic dreapta (nu sunt stângaci.) și selectând meniul Proprietăți. În exemplul meu, trei imagini JPEG sunt despachetate. Copiați-le în subdosarul res al proiectului nostru și apoi importați-le în proiect așa cum este descris mai sus. Ar trebui să existe trei resurse noi de tip „EXE” cu ID-urileIDR_EXE1, IDR_EXE2, IDR_EXE3. Pentru comoditate, putem schimba valorile acestor identificatori cu altele mai convenabile: să fie INDEX1_RES, INDEX2_RES și INDEX3_RES.

Pasul 3.Procedura de recuperare. Să scriem o funcție de recuperare a resurselor folosind funcțiile API. Funcția specificată poate arăta cam așa.

FuncțiaExtractFileExeare trei parametri: directorul în care va fi despachetat fișierul, numele care va fi dat fișierului și identificatorul numeric al resursei din program. Macro-ulMAKEINTRESOURCEmerită atenție aici - vă permite să obțineți numele său simbolic prin identificatorul numeric al resursei din program, care apoi trebuie să fie trecut la funcția de căutare a resurselor FindResource. Funcția API GetModuleHandle cu parametrul NULL vă permite să obțineți un handle pentru modulul nostru principal (și singurul din program).

Deci operatorul

preia resursa cu identificatorul numericINDEX1_RESși o salvează în fișierulindex1.jpeg, calea către care este specificată de șirulcale.