Компоненты на основе реестра с Inno Setup - PullRequest
0 голосов
/ 26 мая 2010

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

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

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

Заранее спасибо.

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

Ответы [ 2 ]

1 голос
/ 26 мая 2010

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

    ; -- 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 голосов
/ 13 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...