Crearea de instalare aplicație flexibilă în configurarea INNO - echipa site-ul oficial easycoding
Foarte des doriți să creați un instalator care ar putea instala programul în directorul% PROGRAMFILES% (în prezența unui drepturi de administrator locale), iar%% LOCALAPPDATA (în absența programului de completare).
În acest ghid, vom discuta despre procesul de creare a unui astfel de instalare, vom da exemple de cod de lucru și să descrie capcanele pe care le puteți întâlni.
Crearea unui instalator
Aici App Name - numele aplicației (directorul în care este instalat programul, este recomandat să folosiți doar litere și cifre).În această directivă, următoarele semnificații:
- admin (în mod implicit, sau în cazul în care nu există în fișierul de configurare) - creat pentru programul de instalare necesită privilegii de administrator;
- poweruser - necesită membru de grup sau utilizatorii experimentați administratori;
- nici unul - start este posibil de către orice utilizator, dar în cazul în care utilizatorul are drepturi de administrator, acestea vor fi utilizate;
- cel mai mic - lansare este de asemenea disponibil de la orice utilizator, dar va fi întotdeauna folosit ca un utilizator normal (nu este recomandat).
capcane
- Nu setați Directiva PrivilegesRequired cel mai scăzut. deoarece în acest caz, programul de instalare va lucra întotdeauna cu drepturi de utilizator și setați% PROGRAMFILES% nu se poate.
- Dacă intenționați să instalați sau biblioteci dinamice, cum ar fi fonturile din directorul de sistem Windows, asigurați-vă că faceți verificări suplimentare, cum ar fi:
exemplu Ready pot fi găsite în proiectul nostru SRC Repair git depozit.
Vă mulțumim pentru ajutor.
O soluție simplă la problema, care dosarul pentru a solicita utilizatorului dacă acesta nu are drepturi de administrator.
Salutări. Sper pentru tine!)))
Cum de a face o alegere din mai multe opțiuni de instalare dosar?
Am o aplicație care este instalat în adăugirile dosarul programului:
Programul în sine ONS dosar se află aici - C: \ Users \ Administrator \ AppData \ Roaming \ Nume
Nume - numele programului.
Inno am comandat după cum urmează:
DefaultDirName = \ Nume
Și totul funcționează bine.
Dar cererea mea este potrivit pentru alte software-uri. Lasă-mă să explic.
Există №1 cameră - Nume
Dar există și altele. De exemplu, nume2 și așa mai departe. E. Aparținând aceeași rețea.
Întrebare. Este posibil, să furnizeze în stadiul de a alege o anumită locație utilizatorului posibilitatea de a alege între opțiunile propuse?
Deci, este de 4-5 opțiuni pune o căpușă în corespunzătoare el și cererea mea a stabilit calea aleasă.
Puteți oferi cu siguranță el pentru a căuta manual dosarul dorit să-l, dar aș dori să aibă grijă de el și pentru a simplifica acest punct.
@ Michael
Puteți scrie propria funcție în secțiunea de cod care va verifica lista de directoare și apoi afișa o fereastră separată, sau chiar o formă cu opțiuni.
Bună ziua. Te rog spune-mi dacă puteți scrie un nume de utilizator cod de verificare prin intermediul registrului pentru a instala etapa de inițializare? Clarificarea, în cazul în care un nume de utilizator în instalare Rusă se oprește cu o cutie de dialog ceva asemănător de instalare nu este posibilă în cazul în care un nume de utilizator în limba engleză, instalarea a mers normal. Sau ce sunt opțiunile, sau prompterul în ce direcție să meargă. Mulțumesc.
@ Sergei
Numele actual al contului de utilizator folosit pentru a rula programul de instalare, este stocat în constanta. și pot fi obținute prin funcția GetUserName ().
@ Sergei
Ar trebui să-l utilizați GetUserName (), și apoi verificați valoarea pentru prezența caracterelor interzise într-un cod de bloc, cum ar fi printr-o expresie regulată, blocarea unui număr de funcții de sistem.
S-1-X - un ID-uri de utilizator unic pe Windows NT. Ei au generat în timpul creării contului și reprezintă o valoare aleatoare unice generate de șablon (mai în detaliu în MSDN). In nici un caz, ar trebui să lucreze direct cu aceste valori!
Apoi mi-am dat seama verifica numele de utilizator prin intermediul registrului nu poate lua. Atunci cum să ia testul dacă vom spune în sistem, doi utilizatori, unul cu drepturi de administrator, iar celălalt un utilizator obișnuit. Daca nu se poate primerchik mare în cazul în care pentru a obține un nume de utilizator cu privilegii de administrator, și pentru a compara cu (bine, de exemplu, scrierea cu majuscule sau cu litere mici de imprimare românească).
@ Sergei
Funcția GetUserName () returnează întotdeauna numele utilizatorului în numele căruia executați programul de instalare. De ce ar trebui să verificați celelalte conturi? Programul va fi în continuare setat pentru acest utilizator.
Dacă am pus programul la nivel global pentru toate, testul trebuie să fie efectuate în timpul rulării aplicației.
Explicați încă o dată, au nevoie de un cod pentru a verifica numele de utilizator (pe calculatoare diferite), în cazul în care numele utilizatorului în programul de instalare grafie chirilica oferă o fereastră în care se va spune că instalarea același nume nu este permisă în cazul în care numele de utilizator în alfabetul latin, în timp ce setarea normală.
Există câteva exemple pentru a verifica registrul în numele programului, în cazul în care programul este instalat când programul de instalare afișează un mesaj că programul cu același nume este setat și blocat (exemplul este în certificat), și așa vreau să tastați acest lucru.
@ Sergei
Acest lucru este oarecum de înțeles. Pur și simplu nu înțeleg cu adevărat de ce verifica toate celelalte conturi pe sistem? În cazul în care programul este instalat pe beton, atunci acesta va lucra pe ea, astfel încât funcția de rezultat GetUserName () pentru scopul dumneavoastră vor fi suficiente. În blocul funcțiilor sistemului cod suprascrie proces care finalizează pentru a instala și își verifică GetUserName valoarea () pentru prezența caracterelor interzise printr-o expresie regulată sau un caracter cu caracter, și apoi să continue sau anula setarea. Este destul de simplu.
Dar dacă într-adevăr doriți să verificați în continuare toate celelalte conturi, va trebui să scrie o funcție specială în blocul de cod care va importa un număr de funcții WinAPI prin stdcall externe, prin care utilizatorii primesc o listă de sisteme de operare și doar apoi pentru a le verifica. Aflați mai multe pe MSDN.
Un exemplu de lucru cu WinAPI apeluri de la instalatori InnoSetup pot fi găsite aici.
Nu, nu am spus că trebuie să verifice toate conturile. Verificarea în cazul în care contul în numele căruia executați programul de instalare.
Funcția GetUserName (): Boolean;
începe
în cazul în care GetUserName (ExpandConstant ( '\ utilizatori \',
MsgBox ( „Programul nu poate fi stabilită“
Rezultat: = false;
Podredaktiruyte care nu este corectă sau supliment, și apoi m-am făcut.