Създаване на гъвкав инсталатор приложение в настройка INNO - официален екип уебсайт easycoding

Много често искате да създадете инсталатор, който ще бъде в състояние да инсталирате програмата в директория% PROGRAMFILES% от (в присъствието на местни администраторски права) и% LOCALAPPDATA% на (при липса на добавката).

В това ръководство, ние ще обсъдим процеса на създаване на такава инсталатор, даваме примери за работещ код и опише клопките, които можете да се срещнат.

Създаване на инсталатор

Тук App Име - името на вашата кандидатура (директорията, в която е инсталирана програмата, се препоръчва да се използват само букви и цифри).
  • Същият [Setup] добавяне:

    В тази директива, следните значения:

    1. администратор (по подразбиране, или, ако не съществува в конфигурационния файл) - създаден за монтажника изисква администраторски права;
    2. Опитен - изисква PowerUser потребителите членство в групата или администратори;
    3. няма - старт е възможно от всеки потребител, но ако потребителят има администраторски права, те ще бъдат използвани;
    4. най-ниската - старт също е достъпна от всеки потребител, но винаги ще се използва като обикновен потребител (не се препоръчва).
  • Сега отидете на блока [Code] (ако не е, след това да създадете самия край на сценария) и се изброят следните две функции:
  • Събиране на проекта.
  • капани

    1. Не настройвайте PrivilegesRequired директива най-ниската. защото в този случай инсталационната програма винаги ще работи с правата на потребителите и да зададете% PROGRAMFILES% не могат.
    2. Ако възнамерявате да инсталирате или динамични библиотеки като шрифтове в системната директория на Windows, се уверете, че направи допълнителни проверки, като:
    В противен случай, можете да получите критична грешка.
  • Когато пишете на ключове в регистъра, освен HKEY_CURRENT_USER. Също така прави проверка за администраторски права (подобно на файлове).
  • Готов например може да се намери в нашата Git хранилището проект SRC ремонт.

    Благодаря ви за помощ.
    А просто решение на проблема, в коя папка да се напомни на потребителя, ако той не разполага с права на администратор.

    Поздрави. Надявам се, че за вас!)))

    Как да се направи избор измежду няколко опции инсталационната папка?
    Имам молба, който е инсталиран в допълненията на папката на програмата:

    Програмата се Ons папка се намира тук - C: \ Users \ Admin \ AppData \ Roaming \ Име
    Име - името на програмата.

    Най-Inno поръчах, както следва:

    DefaultDirName = \ Име
    И всичко работи добре.

    Но молбата ми е подходящ за друг софтуер. Нека обясня.
    Има зала №1 - Име
    Но има и други. Например, NAME2, и така нататък. Е., принадлежащи към същата мрежа.

    Въпрос. Възможно ли е на етапа на избор на място, дава на потребителя възможност за избор между предложените варианти?
    Така че 4-5 опции поставете отметка в съответното него и молбата ми, създаден избрания път.

    Вие със сигурност може да го предложи на ръчно търсене на желаната папка с него, но бих искал да се грижи за него и да се опрости тази точка.

    @ Michael
    Можете да напишете своя собствена функция в раздела за код, който ще провери списъка на директории и след това да се покаже отделен прозорец или дори формуляр с опции.

    Добър ден. Моля, кажете ми, ако можете да напишете чек код потребителско име през регистъра, за да инсталирате етап инициализация? Изяснете, ако потребител име на Руски инсталация спира с диалогов прозорец, нещо като инсталация не е възможно, ако даден потребител име на английски език, инсталацията мина нормално. Или какви са опциите, или ред в каква посока да отида. Благодаря.

    @ Сергей
    Текущ на потребителски акаунт се използва за стартирайте инсталационната програма, се съхранява в константа. и могат да бъдат получени чрез функция GetUserName ().

    @ Сергей
    Вие трябва да използвате това GetUserName () и след това проверете стойността за наличие на забранените знаци в рамките на код блок като се използва регулярен израз, блокиране на редица функции на системата.

    S-1-Х - уникални потребителски идентификатори на Windows NT. Те генерирани по време на създаването на профила и представлява уникален случайна стойност, генерирана от шаблон (по-подробно в MSDN). В никакъв случай би трябвало да работи директно с тези ценности!

    Тогава разбрах, проверете името на потребителя чрез системния регистър не може да поеме. Тогава как да се явя на изпит, ако се каже, в системата, двама потребители, едната с администраторски права, а другият обикновен потребител. Ако не можете да голяма primerchik къде да получите потребителско име с администраторски права, и да се сравни с (добре, например българските печатни главни и малки букви в).

    @ Сергей
    GetUserName () функция винаги връща името на потребителя, от чието име стартирате Setup. Защо трябва да се провери другите си профили? Програмата ще продължи да бъде настроен за този потребител.

    Ако сложим на програмата в световен мащаб за всички, изпитването трябва да се извърши по време на изпълнение на заявката.

    Обяснете още веднъж, необходим код, за да провери името на потребителя (на различни компютри), ако името на потребителя в Кирилица инсталатор осигурява прозорец, в който ще се каже, че инсталирането на едно и също име не се допуска, ако потребителското име на латиница, докато нормалната настройка.
    Има някои примери за проверка на системния регистър от името на програмата, ако програмата е инсталирана, когато инсталаторът показва съобщение, че програмата със същото име е настроен и заключени (примерът е в сертификата) и затова искам да напишете това.

    @ Сергей
    Това донякъде е разбираемо. Просто наистина не разбирам защо се покажат всички други сметки в системата? Ако програмата е инсталирана на бетона, а след това тя ще работи върху него, така че функцията резултат GetUserName () за вашата цел ще са достатъчни. В блок код замяна системни функции процес финализират да инсталират и те проверяват стойност GetUserName () за наличие на забранените знаци по регулярен израз или знак по знак, а след това продължаване или отказ на настройката. Това е достатъчно проста.

    Но ако наистина искате да продължава да се покажат всички други сметки, ще трябва да се напише специална функция в код блок, който ще внася редица функции WinAPI чрез външен stdcall, чрез който потребителите получават списък с операционни системи и едва след това да ги проверите. Научете повече за MSDN.

    Пример за работа с WinAPI обаждания от може да се намери InnoSetup монтажници тук.

    Не, аз не съм казвал, че трябва да се провери всички сметки. Проверка дали сметката от името на което стартирайте инсталационната програма.
    функция GetUserName (): булева;
    започвам
    ако '\ Users \' GetUserName (ExpandConstant (,
    MsgBox ( "Програмата не може да бъде установена"
    Резултат: = False;
    Podredaktiruyte което не е правилно или добавка, а след това аз правя.