2010-05-26 2 views
0

Я создаю приложение для своей компании. И цель состоит в том, чтобы создать универсальный установщик, который будет проверять реестр пользователей для определенных установленных приложений и в соответствии с этими приложениями создаст список доступных компонентов установки в окне «Выберите компоненты». И это особая проблема, с которой я столкнулся.Компоненты на основе реестра с установкой Inno

Я уже создал установщик, но пользователь должен проверить/снять отметку с компонентов, которые ему не нужны, потому что он не использует определенное приложение. Это определенно не очень хороший способ сделать то, что я думаю ...

Так что я прошу о помощи, пожалуйста. Может ли это быть реализовано через окно «Выбрать компоненты» и как или я должен создать страницу мастера с флажками (снова - как)?

Много thx заранее.

P.S. Я уже использовал функцию проверки в моем скрипте, но в этом случае программа автоматически устанавливает все компоненты, связанные с найденными приложениями на компьютере пользователя, и иногда пользователям это не нужно.

ответ

1

Это удаляет компонент на основе значения реестра. Вы хотите изменить это, чтобы соответствовать каждому приложению, которое вы пытаетесь установить, и, вероятно, потребуется функция проверки для каждого приложения.

; -- Components.iss -- 
    ; Demonstrates a components-based installation. 

    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES! 

    [Setup] 
    AppName=My Program 
    AppVerName=My Program version 1.5 
    DefaultDirName={pf}\My Program 
    DefaultGroupName=My Program 
    UninstallDisplayIcon={app}\MyProg.exe 
    OutputDir=userdocs:Inno Setup Examples Output 

    [Types] 
    Name: "full"; Description: "Full installation" 
    Name: "compact"; Description: "Compact installation" 
    Name: "custom"; Description: "Custom installation"; Flags: iscustom 

    [Components] 
    Name: "program"; Description: "Program Files"; Types: full compact custom; Flags: fixed 
    Name: "help"; Description: "Help File"; Types: full; Check: IsMyAppInstalled 
    Name: "readme"; Description: "Readme File"; Types: full 
    Name: "readme\en"; Description: "English"; Flags: exclusive 
    Name: "readme\de"; Description: "German"; Flags: exclusive 

    [Files] 
    Source: "MyProg.exe"; DestDir: "{app}"; Components: program 
    Source: "MyProg.chm"; DestDir: "{app}"; Components: help 
    Source: "Readme.txt"; DestDir: "{app}"; Components: readme\en; Flags: isreadme 
    Source: "Readme-German.txt"; DestName: "Liesmich.txt"; DestDir: "{app}"; Components: readme\de; Flags: isreadme 

    [Icons] 
    Name: "{group}\My Program"; Filename: "{app}\MyProg.exe" 

    [Code] 
    function IsMyAppInstalled(): Boolean; 
    Var 
     installed: String; 

    begin 
     if RegQueryStringValue(HKEY_CURRENT_USER, 'Software\MyApp', 
     'Installed', installed) then 
     result := true 
     Else 
     result := false; 
    end; 
+0

О, человек, я использовал функцию проверки в [Files], но я не думал, что он может быть использован и в разделе [Components]. Большое вам спасибо за помощь! Я должен более внимательно прочитать файл справки inno: – cyxou

+0

Пожалуйста, замените 'if RegQueryStringValue (HKEY_CURRENT_USER, 'Software \ MyApp', 'Installed', установленный), затем результат: = true Результат Else: = false;' с 'result: = RegQueryStringValue (HKEY_CURRENT_USER , 'Software \ MyApp', 'Installed', установленный) ' –

0

То, что вы хотите сделать, выходит за рамки Inno Setup дизайна, и я думаю, что вы должны написать свой собственный инсталлятор, вместо того, чтобы использовать общие рамки установки, такие как установки Inno.

+0

Inno Setup поддерживает скрипты Pascal, поэтому вы можете расширить функциональность по своему усмотрению. –

+0

Совет мультхея помог мне! Но недавно я решил развернуть свой проект с помощью WIX .... – cyxou

Смежные вопросы