Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 4]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


теперь нормально со вторым вариантом.
только добавив как ты сказал
Цитата:
попробуй допиши просто в конце InitializeWizard; перед последним end;
CheckBoxA.visible:=false;
CheckBoxB.visible:=false;
исчезли чек боксы. а страница пустая. может туда можно добавить лицензионное соглашение?
Код: Выделить весь код
[Languages]
;Name: en; MessagesFile: i18n\Default.isl,i18n\sc_english.isl; LicenseFile: dontcopy\license_en.rtf
Name: ru; MessagesFile: i18n\Russian.isl,i18n\sc_russian.isl; LicenseFile: dontcopy\license_ru.rtf
Name: ua; MessagesFile: i18n\Ukrainian-6-5.1.11.isl,i18n\sc_ukrainian.isl; LicenseFile: dontcopy\license_ua.rtf

Отправлено: 13:50, 20-04-2012 | #1591



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Temyraz@fb,
склеить компоненты в одном инсталле можно 2-мя способами
1. это в зависимости от записи реестра (посмотри пример который я давал Devils Night, пару страниц назад )
2. делать две страницы с листбоксами и пропускать одну из них. Только я почти не умею пользоваться листбоксами
3. блокировать элементы компонентслиста в зависимости от выбора одного из основных чекбоксов на странице приветсятвия (не советую)
Цитата Temyraz@fb:
исчезли чек боксы »
главное чтобы даже невидимыми они работали, что они и должны делать
Цитата Temyraz@fb:
может туда можно добавить лицензионное соглашение? »
как хочешь
заменил радиокнопки на один чекбокс
этим примером немного переделанным
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My License
AppVerName=My License v 1.3
CreateAppDir=False
OutputDir=.
licenseFile=compiler:license.txt
 
 
[Languages]
Name: rus; MessagesFile: "compiler:Languages\Russian.isl";
 
[ Code]
 
var
  CheckLicense: TCheckBox;
 
 
procedure LicenseOnClick(Sender: TObject);
begin
  if (CheckLicense.Checked) = True then
  begin
    WizardForm.LicenseAcceptedRadio.Checked := True;
  end else
  begin
    WizardForm.LicenseNotAcceptedRadio.Checked := True;
  end;
end;
 
 
procedure InitializeWizard();
begin
  WizardForm.LicenseNotAcceptedRadio.Hide;
  WizardForm.LicenseAcceptedRadio.Hide;
  WizardForm.LicenseMemo.Height := ScaleY(175);
 
  CheckLicense := TCheckBox.Create(WizardForm);
  CheckLicense.Left := ScaleX(0);
  CheckLicense.Top := ScaleY(216);
  CheckLicense.Caption := WizardForm.LicenseAcceptedRadio.Caption;
  CheckLicense.Width := ScaleX(417);
  CheckLicense.OnClick := @LicenseOnClick;
  CheckLicense.Parent := WizardForm.LicensePage;
end;


результат

читать дальше »

Код: Выделить весь код
[Setup]
AppName=DisksInfo
VersionInfoVersion=5.0
AppVerName=DisksInfo
DefaultDirName={pf}\My program
EnableDirDoesntExistWarning=true


[  Code]




var
  CheckBoxA: TNewCheckBox;
  CheckBoxB: TNewCheckBox;
  /// это общее /// начало
  PasswordPage: TInputQueryWizardPage;
  DataDirPage: TInputDirWizardPage;

  UserVarPass: String;
  PathToPsql: String;
    CheckLicense: TNewCheckBox;
  
  
  
procedure ReplacePathInConfigsReg();
var filecontent: String;
var pathForConfig: String;
var langForConfig: String;
begin
  LoadStringFromFile(ExpandConstant(CurrentFileName), filecontent);
  langForConfig:=ExpandConstant('{language}');
  pathForConfig:=ExpandConstant('{app}');
  StringChange(pathForConfig,'\','\\');
  StringChange(filecontent,'{INSTALL_PATH}',pathForConfig);
  StringChange(filecontent,'{LANGUAGE}',langForConfig);
  SaveStringToFile(ExpandConstant(CurrentFileName), filecontent, false);
end;

function CheckPortUsing(Port: String; fileStrings: TArrayOfString): Boolean;
var i: Integer;
begin
   for i:=0 to GetArrayLength(fileStrings)-1 do
   begin
		if ((Pos(':'+Port+' ',fileStrings[i])>0) and (Pos('LISTENING',fileStrings[i]) >0)) then
			begin
				Result := true;
				exit;
			end;
  end;
  Result := false;
end;

  /// конец

/// лицензия // начало
procedure LicenseOnClick(Sender: TObject);
begin
  if (CheckLicense.Checked) = True then
  begin
    WizardForm.LicenseAcceptedRadio.Checked := True;
  end else
  begin
    WizardForm.LicenseNotAcceptedRadio.Checked := True;
  end;
end;
/// конец

/// пропускаем страницы /// начало
function  ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    wpLicense: Result := True;
  end;
end;
/// конец
  
  
/// кусок из варианта 2 /// начало
function GetBuildNumber(param: String): String;
     var
          BuildVersion: String;
     begin
          LoadStringFromFile(ExpandConstant('buildNumber.txt'), BuildVersion);
          Result := BuildVersion;
     end;




function GetPsqlPath(Param: String): String;
begin
	Result := PathToPsql + '\psql.exe';
end;

procedure ReplacePathInConfigs();
var filecontent: String;
var pathForConfig: String;
var langForConfig: String;
begin
  LoadStringFromFile(ExpandConstant(CurrentFileName), filecontent);
  langForConfig:=ExpandConstant('{language}');
  pathForConfig:=ExpandConstant('{app}');
  StringChange(pathForConfig,'\','/');
  StringChange(filecontent,'{INSTALL_PATH}',pathForConfig);
  StringChange(filecontent,'{LANGUAGE}',langForConfig);
  SaveStringToFile(ExpandConstant(CurrentFileName), filecontent, false);
end;



procedure ReplacePathInConfigsPass();
var filecontent: String;
begin
  LoadStringFromFile(ExpandConstant(CurrentFileName), filecontent);
  StringChange(filecontent,'{PG_PASS}',UserVarPass);
  SaveStringToFile(ExpandConstant(CurrentFileName), filecontent, false);
end;
/// конец


/// это кусок варианта 1 /// начало
procedure StopTomcat();
var
  ErrorCode: Integer;
begin
  if not Exec('NET',' STOP "Apache Tomcat"', '' ,SW_HIDE, ewWaitUntilTerminated, ErrorCode) then
  begin
    MsgBox('Fail to stop tomcat', mbInformation, mb_Ok);
  end;
end;





function CheckDBUpdateIsOk(): Boolean;
var filecontent: String;
var pathToLog: String;
begin
  Result:= false;
  pathToLog:=ExpandConstant('{app}')+'\db_update\db_update_log.log';
  LoadStringFromFile(pathToLog, filecontent);
  if (Pos('Update succesfully',filecontent)>0) then
  begin
	Result:= true;
  end

end;








procedure AddDefaultToConfig();
var filecontent_default: String;
var configStrings,defaultStrings: TArrayOfString;
var pathToConfig,pathToDefaultConfig,appPath: String;
var langForConfig,currentKey: String;
var currentPos,i,j: Integer;
var containKey: Boolean;
begin
  // извлекаем конфиг по умолчанию
  ExtractTemporaryFile('settings.properties');
  pathToConfig:=ExpandConstant('{app}')+'\apache-tomcat\webapps\ROOT\WEB-INF\settings.properties';
  pathToDefaultConfig:=ExpandConstant('{tmp}\settings.properties');
  appPath:=ExpandConstant('{app}');
  langForConfig:=ExpandConstant('{language}');
  // заменяем пути в конфиге по умолчанию
  LoadStringFromFile(pathToDefaultConfig, filecontent_default);
  StringChange(appPath,'\','/');
  StringChange(filecontent_default,'{INSTALL_PATH}',appPath);
  StringChange(filecontent_default,'{LANGUAGE}',langForConfig);
  SaveStringToFile(pathToDefaultConfig, filecontent_default, false);
  // загружаем как строки конфиг по умолчанию
  LoadStringsFromFile(pathToDefaultConfig, defaultStrings);
  // загружаем как строки конфиг sc
  LoadStringsFromFile(pathToConfig, configStrings);

  for i:=0 to GetArrayLength(defaultStrings)-1 do
   begin
		currentPos:=Pos('=',defaultStrings[i]);
		if ((currentPos>0)) then
			begin
				currentKey:=Trim(Copy(defaultStrings[i], 0, currentPos-1));
				containKey:=false;
				  for j:=0 to GetArrayLength(configStrings)-1 do
					begin
						if ((Pos(currentKey,configStrings[j])>0)) then
						begin
							containKey:=true;
						end;
					end;
				if (containKey=false) then
					begin
						//добавляю в конфиг
						SetArrayLength(configStrings, GetArrayLength(configStrings)+1);
						configStrings[GetArrayLength(configStrings)-1]:=defaultStrings[i];
					end
			end;
  end;
  SaveStringsToFile(pathToConfig, configStrings, false);
end;


var
  TodaysName : String;

function GetToday : String;
begin
  Result := GetDateTimeString ('yyyy.mm.dd hh.nn.ss', '-', #0);
end;

function GetTodaysName (Param: String): String;
begin
  if ('' = TodaysName) then
  begin
    TodaysName := GetToday ();
  end;
  Result := TodaysName;
end;



procedure CurPageChanged(CurPageID: Integer);
  var ResultCode: Integer;
Begin
If (CurPageID=wpInfoAfter)or(CurPageID=wpFinished ) then
	begin
	if (not CheckDBUpdateIsOk) then begin
			MsgBox(ExpandConstant('{cm:ErrorUpdatingDB}')+' ('+ExpandConstant('{app}')+'\backups)', mbCriticalError, mb_Ok);
			Abort;
		end
	end
end;
/// конец
  
  
function Run_A: Boolean; begin Result:=CheckBoxA.Checked; end;
function Run_B: Boolean; begin Result:=CheckBoxB.Checked; end;


Function InitializeSetup: Boolean;
  var ResultCode: Integer;
  var fileStrings: TArrayOfString;
  var pathToOutput: String;
  var outputFile: String;
  
Begin
/// это общее?  /// начало
	If (ExpandConstant('{reg:HKLM\Software\JavaSoft\Java Runtime Environment,CurrentVersion}') = '1.6') then
		Result:= True
	else MsgBox(ExpandConstant('{cm:SetupJRE}'), mbInformation, mb_Ok);
/// конец
	
	outputFile:=ExpandConstant('{tmp}\netstatoutput.log');
	pathToOutput:=ExpandConstant('{tmp}\');
	ExtractTemporaryFile('netstat1.bat');
	if Exec(ExpandConstant('{tmp}\netstat1.bat'),  'netstatoutput.log', pathToOutput, SW_HIDE, ewWaitUntilTerminated, ResultCode) then
	begin
		//MsgBox(outputFile, mbInformation, mb_Ok);
		// handle success if necessary; ResultCode contains the exit code
		LoadStringsFromFile(outputFile, fileStrings);
		DeleteFile(outputFile);
		DeleteFile(ExpandConstant('{tmp}\netstat1.bat'));
		If (CheckPortUsing('80',fileStrings) and (Result=true)) then
		begin
		  Result := MsgBox(ExpandConstant('{cm:Port80InUse}'), mbConfirmation, MB_YESNO) = idYes;
		end
  end
  else MsgBox('Error ', mbInformation, mb_Ok);
End;


procedure InitializeWizard;
begin
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.LicenseNotAcceptedRadio.Hide;
  WizardForm.LicenseAcceptedRadio.Hide;
  { CheckLicense }
  CheckLicense := TNewCheckBox.Create(WizardForm);
  with CheckLicense do
  begin
    Name := 'CheckLicense';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(176);
    Top := ScaleY(288);
    Width := ScaleX(97);
    Height := ScaleY(17);
    OnClick := @LicenseOnClick;
    CheckLicense.Caption := WizardForm.LicenseAcceptedRadio.Caption;
  end;
  
  with WizardForm.LicenseMemo do
  begin
    Left := ScaleX(164);
    Top := ScaleY(0);
    Width := ScaleX(333);
    Height := ScaleY(284);
    Parent := WizardForm.WelcomePage;
  end;
  
  /// это общее /// начало
  DataDirPage := CreateInputDirPage(wpSelectDir, ExpandConstant('{cm:DirSelectCaption}'), ExpandConstant('{cm:DirSelectDescription}'), ExpandConstant('{cm:DirSelectSubCaption}'), False, '' );
  DataDirPage.Add('');
  DataDirPage.Values[0] := GetPreviousData('DataDir', 'C:\Program Files\PostgreSQL\9.0\bin');

  PasswordPage := CreateInputQueryPage(DataDirPage.ID, ExpandConstant('{cm:PasswordInputCaption}') ,ExpandConstant('{cm:PasswordInputDescription}'), ExpandConstant('{cm:PasswordInputSubCapton}') );
  PasswordPage.Add(SetupMessage(msgPasswordEditLabel), True);
  /// конец
  
  { CheckBoxA }
  CheckBoxA := TNewCheckBox.Create(WizardForm);
  with CheckBoxA do
  begin
    Name := 'CheckBoxA';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(216);
    Top := ScaleY(176);
    Width := ScaleX(97);
    Height := ScaleY(17);
    Caption := 'вариант 1';
  end;
  { CheckBoxB }
  CheckBoxB := TNewCheckBox.Create(WizardForm);
  with CheckBoxB do
  begin
    Name := 'CheckBoxB';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(216);
    Top := ScaleY(208);
    Width := ScaleX(97);
    Height := ScaleY(17);
    Caption := 'вариант 2';
  end;
//// проверка
  if  not RegKeyExists(HKEY_CURRENT_USER, 'Software\Corssys\Synergy Center') or
     RegKeyExists(HKEY_CURRENT_USER, 'Software\IVTBelGU\Synergy Center')
  then
    begin
      ///запустит вариант 1
      CheckBoxA.Enabled:=true;
      CheckBoxA.Checked:=true;
        
      CheckBoxB.Enabled:=false;
      CheckBoxB.Checked:=false;
    end
  else
    begin
      CheckBoxA.Enabled:=false;
      CheckBoxA.Checked:=false;

      CheckBoxB.Enabled:=true;
      CheckBoxB.Checked:=true;
    end;
CheckBoxA.visible:=false;
CheckBoxB.visible:=false;
end;


function NextButtonClick(CurPageID: Integer): Boolean;
var filecontent: String;
	ReturnCode: Integer;
	
	
begin
  Result := True;
  if CurPageID = DataDirPage.ID then begin
	if FileExists ( DataDirPage.Edits[0].Text + '\psql.exe' ) then
		begin
			Result := True;
			PathToPsql := DataDirPage.Edits[0].Text;
		end
	else
		begin
			MsgBox(ExpandConstant('{cm:msgNotFoundPsql}'), mbError, MB_OK);
			Result := False;
		end;
	end;

/////////// начало проверки
begin
if CheckBoxA.Checked = true then
begin


begin
  Result := True;
 If CurPageID = wpSelectDir then
  begin
	If (FileSearch('settings.properties', ExpandConstant('{app}')+'\apache-tomcat\webapps\ROOT\WEB-INF')='') then
	begin
		MsgBox(ExpandConstant('{cm:ErrorSCNotFound}'), mbCriticalError, mb_Ok);
		Result:=False;
	end
 end;


  if CurPageID = PasswordPage.ID then begin
	UserVarPass := PasswordPage.Edits[0].Text;
	ExtractTemporaryFile('check.bat');
    Exec (ExpandConstant ( '{tmp}\check.bat' ), PasswordPage.Edits[0].Text + ' "' + PathToPsql + '"' , ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
	if ReturnCode = 0 then
		begin
			Result := True;
		end
	else
		begin
			MsgBox(ExpandConstant('{cm:msgIncorrectPassword}'), mbError, MB_OK);
			Result := False;
		end;
	DeleteFile ( ExpandConstant ('{tmp}\check.bat') );
  end;
end;


end;
/////////////////////////////////////////////////////////////////////
  
if CheckBoxB.Checked = true then
  begin
  

  if CurPageID = PasswordPage.ID then begin
	UserVarPass := PasswordPage.Edits[0].Text;
	ExtractTemporaryFile('check.bat');
    Exec (ExpandConstant ( '{tmp}\check.bat' ), PasswordPage.Edits[0].Text + ' "' + PathToPsql + '"' , ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
	if ReturnCode = 0 then
		begin
			Result := True;
		end
	else
		begin
			MsgBox(ExpandConstant('{cm:msgIncorrectPassword}'), mbError, MB_OK);
			Result := False;
		end;
	DeleteFile ( ExpandConstant ('{tmp}\check.bat') );
  end;
end;

end;

end;

Последний раз редактировалось Johny777, 20-04-2012 в 14:17.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:08, 20-04-2012 | #1592


Аватара для wolkow70

Ветеран


Сообщения: 3206
Благодарности: 845

Профиль | Отправить PM | Цитировать


Расшифруйте пожалуйста точное значение флагов в таком случае:

Flags: uninsneveruninstall regserver onlyifdoesntexist

-------
Человек человеку - друг, товарищ и волк!


Отправлено: 14:16, 20-04-2012 | #1593


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


wolkow70,
из справки http://sendfile.su/570136

читать дальше »

uninsneveruninstall
Никогда не удалять данный файл. Его можно использовать при установке файла, предназначенного для общего использования, как, например, MFC DLL, потому что в этом случае деинсталлятор не должен его удалять до тех пор, пока его используют другие приложения.
regserver
Регистрация OLE-сервера (он же ActiveX control). Если этот флаг установлен, инсталлятор найдет и выполнит DllRegisterServer для DLL/OCX. Деинсталлятор вызовет DllUnregisterServer. При использовании в комбинации с флагом sharedfile DLL/OCX будет только дерегистрирована, когда связывающий счетчик достигнет нуля.

On a 64-bit mode install, the file is assumed to be a 64-bit image and will be registered inside a 64-bit process. You can override this by specifying the 32bit flag.

Дополнительные сведения приведены в конце страницы.
onlyifdoesntexist
Устанавливает файл только в случае, если такого файла в системе пользователя нет.


Flags: "не удалять при деинсталяции" "хз" "если существует, то не устанавливать=пропускать"

Последний раз редактировалось Johny777, 20-04-2012 в 14:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:26, 20-04-2012 | #1594


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


а как сделать чтоб пока check не стоит кнопка далее была не доступна?
Код: Выделить весь код
{ CheckLicense }
  CheckLicense := TNewCheckBox.Create(WizardForm);
  with CheckLicense do
  begin
    Name := 'CheckLicense';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(176);
    Top := ScaleY(288);
    Width := ScaleX(200);
    Height := ScaleY(17);
    OnClick := @LicenseOnClick;
    CheckLicense.Caption := WizardForm.LicenseAcceptedRadio.Caption;
  end;

Отправлено: 14:30, 20-04-2012 | #1595


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Цитата Temyraz@fb:
а как сделать чтоб пока check не стоит кнопка далее была не доступна? »
добавь у себя
читать дальше »
Код: Выделить весь код
procedure LicenseOnClick(Sender: TObject);
begin
  if (CheckLicense.Checked) = True then
  begin
    WizardForm.LicenseAcceptedRadio.Checked := True;
    WizardForm.NextButton.Enabled := True;
  end else
  begin
    WizardForm.LicenseNotAcceptedRadio.Checked := True;
    WizardForm.NextButton.Enabled := False;
  end;
end;


а так как с лицензией соглашаемся на странице приветствия (первой)
то допиши в конце InitializeWizard рядом с невидимыми) чекбоксами

WizardForm.NextButton.Enabled := False;
CheckLicense.Checked := false;
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:38, 20-04-2012 | #1596


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


сделал как ты сказал, ничего не изменилось.

ошибся, изменилось. только когда запускаешь его, чек не стоит, кнопка доступна, когда чек ставишь, кнопка доступна, снимаешь чек кнопка не доступна. как то так

выход нашел сделать по умолчанию галочку на принятии соглашении

Последний раз редактировалось Temyraz@fb, 20-04-2012 в 15:10.


Отправлено: 14:43, 20-04-2012 | #1597


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Temyraz@fb,
Ты извини. У меня скрипт есть, но запустить не могу, тк нет временных файлов и констат
вот отдельный рабочий пример
раскидай по секциям и замени существующие куски
читать дальше »
Код: Выделить весь код
[Setup]
AppName=DisksInfo
VersionInfoVersion=5.0
AppVerName=DisksInfo
DefaultDirName={pf}\My program
EnableDirDoesntExistWarning=true
licenseFile=compiler:license.txt


[  Code]
var
 CheckLicense: TNewCheckBox;
  
/// лицензия // начало
procedure LicenseOnClick(Sender: TObject);
begin
  if (CheckLicense.Checked) = True then
  begin
    WizardForm.LicenseAcceptedRadio.Checked := True;
    WizardForm.NextButton.Enabled := True;
  end else
  begin
    WizardForm.LicenseNotAcceptedRadio.Checked := True;
    WizardForm.NextButton.Enabled := False;
  end;
end;
/// конец

/// пропускаем страницы /// начало
function  ShouldSkipPage(PageID: Integer): Boolean;
begin
  case PageID of
    wpLicense: Result := True;
  end;
end;
/// конец
  
  
procedure InitializeWizard;
begin
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  WizardForm.LicenseNotAcceptedRadio.Hide;
  WizardForm.LicenseAcceptedRadio.Hide;
  { CheckLicense }
  CheckLicense := TNewCheckBox.Create(WizardForm);
  with CheckLicense do
  begin
    Name := 'CheckLicense';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(176);
    Top := ScaleY(288);
    Width := ScaleX(200);
    Height := ScaleY(17);
    Checked := True;
    OnClick := @LicenseOnClick;
    CheckLicense.Caption := ExpandConstant(SetupMessage(msgLicenseAccepted));
  end;
  
  with WizardForm.LicenseMemo do
  begin
    Left := ScaleX(164);
    Top := ScaleY(0);
    Width := ScaleX(333);
    Height := ScaleY(284);
    Parent := WizardForm.WelcomePage;
  end;
end;

procedure CurPageChanged(CurPageID: Integer); 
begin
  if CurPageID=wpWelcome then
    begin
      WizardForm.NextButton.Enabled := False;
      CheckLicense.Checked := false;
    end;
end;


только при возврате на страницу приветствия опять галка будет снята, а кнопка заблокирована

Последний раз редактировалось Johny777, 20-04-2012 в 15:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 20-04-2012 | #1598


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Johny777 спасибо тебе большое

я правильно понял логику:
Код: Выделить весь код
[Files]
Source: {src}\files\*; DestDir: {code:SrcDir}\files\; Flags: ignoreversion recursesubdirs createallsubdirs external; Check: значение
Source: {src}\license\*; DestDir: {code:SrcDir}\license\; Flags: ignoreversion recursesubdirs createallsubdirs external; Check: значение
вот какие значения надо подставлять при первом варианте и при втором?

Отправлено: 15:32, 20-04-2012 | #1599


Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Temyraz@fb,
ты о чём?

Отправлено: 15:38, 20-04-2012 | #1600



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход