2015-01-06 3 views
2

Мой Inno скрипт имеет две задачи:InnoSetup, предотвратить установку, если любая задача выбрана

[Tasks] 
Name: client; Description: Install FTP client 
Name: server; Description: Install FTP server 

Я хотел бы запретить установку в ненавязчивым способом, если выбран какой-либо задачи, для non.intrusive I например, включение/выключение «следующей» кнопки, когда проверяется одна из двух задач, нет рекламного блока messagbe.

Я не уверен, если InnoSetup имеет параметр или функцию «проверить», чтобы сделать это простым способом

Как я могу это сделать?

ответ

3

Невозможно сделать то, что вы хотите изначально в Inno Setup. Вам нужно будет сделать это из кода самостоятельно.

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

[Setup] 
AppName=My Program 
AppVersion=1.5 
DefaultDirName={pf}\My Program 

[Tasks] 
Name: client; Description: Install FTP client 
Name: server; Description: Install FTP server 

[Code] 
// helper function 
function IsAnyTaskSelected: Boolean; 
begin 
    Result := WizardSelectedTasks(False) <> ''; 
end; 

// event handler for setting the next button initial state when 
// entering the tasks page 
procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurPageID = wpSelectTasks then 
    WizardForm.NextButton.Enabled := IsAnyTaskSelected; 
end; 

// method of the task list check click event 
procedure TasksListClickCheck(Sender: TObject); 
begin 
    WizardForm.NextButton.Enabled := IsAnyTaskSelected; 
end; 

procedure InitializeWizard; 
begin 
    WizardForm.TasksList.OnClickCheck := @TasksListClickCheck; 
end; 
+0

Я не знаю, если вы являетесь официальным разработчик InnoSetup но вы демонстрируют удивительные знания о внутренних компонентах InnoSetup, как всегда. Я мог бы пробовать это сам по себе в течение 6 месяцев и никогда не нахожу решения, спасибо за помощь и за то, чтобы помочь вам в использовании кодеков innosetup. – ElektroStudios

+1

Добро пожаловать, и спасибо! Я не являюсь спонсором (у меня есть несколько идей для работы, но у вас нет лишнего времени, к сожалению). Но здесь вы можете найти [Jordan Russell] (http://stackoverflow.com/users/432561/jordan-russell) и [Martijn Laan] (http://stackoverflow.com/users/301485/mlaan) здесь. – TLama

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