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

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

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

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

Ветеран


Contributor


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


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

Профиль | Отправить 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 | Цитировать


спасибо, сделал как ты сказал, помогло

Отправлено: 13:43, 24-04-2012 | #1651



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

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


Аватара для Ivan_009

Ветеран


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

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


Как сделать выделенную область черным цветом а сам текст белым. Пробовал через редактор форм почемуто не пулучается.Подскажите если не трудно...

Последний раз редактировалось Ivan_009, 28-04-2012 в 09:06.


Отправлено: 18:43, 24-04-2012 | #1652


Аватара для Johny777

Ветеран


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

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


Ivan_009,
всё просто
1.
в дизайнере на соответствующей странице *(выбери её слева) нажми на это окошко (InfoBeforeMemo) как у тебя на картинке
выбери для него *(справа) в сроке Color цвет clBlack
2.
в качестве файла используй RTF ("Пуск" - "все программы" - "стандартные" - "WordPad") документ и поменяй в нём цвет строк и слов на белый или любой другой который будет виден на чёрном фоне
пример
[Setup]
InfoBeforeFile=info_before-Russian.rtf

файл пример ниже
но скроллбар будет белым (это если без скина)
______________________________________________
в него же можно вписывать ссылки
они будут кликабельны

http://forum.oszone.net/thread-218969-166.html

Последний раз редактировалось Johny777, 04-09-2012 в 13:25.

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

Отправлено: 19:08, 24-04-2012 | #1653


Аватара для Ivan_009

Ветеран


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

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


Johny777 класс . Большое спасибо.

Отправлено: 19:15, 24-04-2012 | #1654


Аватара для R.i.m.s.k.y.

Ветеран


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

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


подскажите, пожалуйста, как узнать "канальность" звука в windows

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 19:59, 24-04-2012 | #1655


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


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

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


не знаю почему то сначала работает так как надо, а потом нет(((
помогите если вам не сложно.
есть инсталер
читать дальше »
Код: Выделить весь код
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Synergy Center"
#ifndef MyAppVer
	#define MyAppVer "2.4"
#endif
#ifndef MyAppPatch
	#define MyAppPatch "11"
#endif
#ifndef MyAppBuild
	#define MyAppBuild "0"
#endif
#define MyAppPublisher ""
#define MyAppURL ""
#define InstalledLocalURL "http://localhost"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{903E5749-D9EC-45A3-A5E1-B0621695F680}
AppName={#MyAppName}
AppVerName={#MyAppName} {#MyAppVer}
VersionInfoVersion={#MyAppVer}.{#MyAppPatch}.{#MyAppBuild}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir={#MyOutputDir}
OutputBaseFilename=SynergyCenter{#MyAppVer}Setup
Compression=lzma
SolidCompression=yes
LicenseFile=dontcopy\license_ru.rtf
WizardImageFile=wizard\WizModernImage-IS.bmp
WizardSmallImageFile=wizard\WizModernSmallImage-IS.bmp

[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

[Registry]
Root: HKLM; Subkey: Software\Synergy Center; ValueType: string; ValueName: Version; ValueData: {#MyAppVer}.{#MyAppPatch}; Flags: uninsdeletekey

[Dirs]
Name: {app}\apache-tomcat; Flags: uninsneveruninstall; Languages: 
Name: {app}\files; Flags: uninsneveruninstall; Languages: 
Name: {app}\nginx; Flags: uninsneveruninstall; Languages: 
Name: {app}\dbinit; Flags: uninsneveruninstall; Languages: 
Name: {app}\backups; Flags: uninsneveruninstall; Languages: 

[Files]
Source: apache-tomcat\*; DestDir: {app}\apache-tomcat; Flags: ignoreversion recursesubdirs createallsubdirs
Source: apache-tomcat\msvcr71.dll; DestDir: {sys}\; Flags: onlyifdoesntexist
Source: {#MyWebContentPath}\*; DestDir: {app}\apache-tomcat\webapps\ROOT; Flags: ignoreversion recursesubdirs createallsubdirs
Source: download\*; DestDir: {app}\apache-tomcat\webapps\ROOT\public\download\; Flags: ignoreversion recursesubdirs createallsubdirs
Source: configs\WEB-INF\settings.properties; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: configs\WEB-INF\classes\log4j.xml; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: configs\nginx_to_autorun.reg; DestDir: {app}\nginx\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigsReg
Source: nginx\add_reg.bat; DestDir: {app}\nginx\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigsReg
Source: nginx\*; DestDir: {app}\nginx; Flags: ignoreversion recursesubdirs createallsubdirs
Source: dbinit\*; DestDir: {app}\dbinit; Flags: ignoreversion recursesubdirs; AfterInstall: ReplacePathInConfigsPass
Source: UserMenu\*; DestDir: {app}; Flags: ignoreversion recursesubdirs; Languages: ; AfterInstall: ReplacePathInConfigs
Source: {#MySetupDbPath}\db\*.sql; DestDir: {app}\dbinit; Flags: ignoreversion
Source: dontcopy\netstat1.bat; Flags: dontcopy
Source: dontcopy\check.bat; Flags: dontcopy

[Icons]
Name: {group}\{#MyAppName}; Filename: {#InstalledLocalURL}
;Name: {group}\Start Tomcat; Filename: {app}\TomcatServiceStart.exe; WorkingDir: {app}\; Comment: {cm:RunTomcat}; Flags: runminimized; Components:
;Name: {group}\Stop Tomcat; Filename: {app}\TomcatServiceStop.exe; WorkingDir: {app}\; Comment: {cm:StopTomcat}; Flags: runminimized
Name: {group}\{cm:AdminManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\admin_manual.pdf; Languages: ru
Name: {group}\{cm:UserManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\user_manual.pdf; Languages: ru
Name: {group}\{cm:AdminManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\ua\manual_admin.pdf; Languages: ua
Name: {group}\{cm:UserManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\ua\manual_user.pdf; Languages: ua
Name: {group}\{cm:Rukovodstvo_administratora}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\Rukovodstvo_administratora.pdf
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}

[Run]
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " install"; WorkingDir: {app}\apache-tomcat\bin\; Flags: runhidden; StatusMsg: Installing Apache Tomcat as Service
Filename: NET; Parameters: "START ""Apache Tomcat"""; Flags: runhidden; Components: PostgreSQL; StatusMsg: {cm:StartingTomcat}
Filename: {app}\dbinit\createAndInitDb.bat; Parameters: """{code:GetPsqlPath}""  {language}"; WorkingDir: {app}\dbinit\; Flags: shellexec runhidden waituntilterminated; Components: PostgreSQL; StatusMsg: {cm:CreatingDatabase}
Filename: {app}\nginx\add_reg.bat; Flags: shellexec runhidden
Filename: {app}\start_nginx.bat; Flags: shellexec runhidden
Filename: {app}\dbinit\installAdditionalCards.bat; Parameters: """{code:GetPsqlPath}"" {language}"; WorkingDir: {app}\dbinit\; Flags: shellexec runhidden waituntilterminated; Components: PostgreSQL; StatusMsg: {cm:CreatingDatabase}; Tasks: IntstallDefaultShemes
Filename: {app}\Synergy Center.url; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent shellexec; Components: PostgreSQL

[UninstallRun]
Filename: NET; Parameters: "STOP ""Apache Tomcat"""; Flags: runhidden
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " remove"; WorkingDir: {app}\apache-tomcat\bin\; Flags: runhidden; Components: 
Filename: {app}\stop_nginx.bat; WorkingDir: {app}\; Components: 

[Components]
Name: Tomcat; Description: {cm:ApacheTomcatComponent}; Flags: fixed; Types: custom compact full
Name: PostgreSQL; Description: {cm:PostgresComponent}; Types: custom full; Flags: checkablealone; ExtraDiskSpaceRequired: 16080384; Languages: 

[Tasks]
Name: IntstallDefaultShemes; Description: {cm:IntstallDefaultShemes}; Flags: checkablealone; Components: Postgresql; Languages: 

[UninstallDelete]
Name: {app}\dbinit; Type: dirifempty

[ Code]

var
  PasswordPage: TInputQueryWizardPage;
  DataDirPage: TInputDirWizardPage;

  UserVarPass: String;
  PathToPsql: String;
// STAGE 2
procedure InitializeWizard();
begin

  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);
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;

  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;


function GetBuildNumber(param: String): String;
     var
          BuildVersion: String;
     begin
          LoadStringFromFile(ExpandConstant('buildNumber.txt'), BuildVersion);
          Result := BuildVersion;
     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;

// >>> STAGE 1 <<<
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;

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 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;

procedure ReplacePathInConfigsPass();
var filecontent: String;
begin
  LoadStringFromFile(ExpandConstant(CurrentFileName), filecontent);
  StringChange(filecontent,'{PG_PASS}',UserVarPass);
  SaveStringToFile(ExpandConstant(CurrentFileName), filecontent, false);
end;

есть обновление
читать дальше »
Код: Выделить весь код
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Обновление Synergy Center"
#ifndef MyAppVer
	#define MyAppVer "2.4"
#endif
#ifndef MyAppPatch
	#define MyAppPatch "11"
#endif
#ifndef MyAppBuild
	#define MyAppBuild "0"
#endif
#define MyAppPublisher " "

#define MyAppURL " "
#define InstalledLocalURL "http://localhost"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{903E5749-D9EC-45A3-A5E1-B0621695F680}
AppName={cm:UpdateApplicationName}
AppVerName={#MyAppName} {#MyAppVer}.{#MyAppPatch}
VersionInfoVersion={#MyAppVer}.{#MyAppPatch}.{#MyAppBuild}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputDir={#MyOutputDir}
UpdateUninstallLogAppName=no
UsePreviousAppDir=yes
CreateUninstallRegKey=no
;DisableDirPage=yes

OutputBaseFilename=Synergy Center Update {#MyAppVer}.{#MyAppPatch}
Compression=lzma
SolidCompression=yes
WizardImageFile=wizard\WizModernImage-IS.bmp
WizardSmallImageFile=wizard\WizModernSmallImage-IS.bmp

[Registry]
Root: HKLM; Subkey: Software\Corssys\Synergy Center; ValueType: string; ValueName: Version; ValueData: {#MyAppVer}.{#MyAppPatch}; Flags: uninsdeletekey

[Languages]
Name: ru; MessagesFile: i18n\Russian.isl,i18n\sc_russian.isl
Name: ua; MessagesFile: i18n\Ukrainian-6-5.1.11.isl,i18n\sc_ukrainian.isl

[Dirs]
Name: {app}\db_update; Flags: uninsneveruninstall; Languages: 
Name: {app}\backups; Flags: uninsneveruninstall; Languages: 

[InstallDelete]
Name: {app}\apache-tomcat\bin\service.bat; Type: filesandordirs; BeforeInstall: StopTomcat
Name: {app}\apache-tomcat\work\*; Type: filesandordirs; BeforeInstall: StopTomcat
Name: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\su\*; Type: filesandordirs; BeforeInstall: StopTomcat
Name: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\i18n\*; Type: filesandordirs; BeforeInstall: StopTomcat
Name: {app}\apache-tomcat\webapps\ROOT\WEB-INF\lib\*; Type: filesandordirs; BeforeInstall: StopTomcat


[Files]
Source: {app}\apache-tomcat\webapps\ROOT\*; DestDir: {app}\backups\Webcontent-before-{#MyAppVer}.{#MyAppPatch}-{code:GetTodaysName}; Flags: ignoreversion recursesubdirs createallsubdirs external uninsneveruninstall; Components: backup_app
Source: {#MyWebContentPath}\*; DestDir: {app}\apache-tomcat\webapps\ROOT; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: StopTomcat
Source: download\*; DestDir: {app}\apache-tomcat\webapps\ROOT\public\download\; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddDefaultToConfig
Source: apache-tomcat\bin\service.bat; DestDir: {app}\apache-tomcat\bin\; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddDefaultToConfig
Source: configs\WEB-INF\settings.properties; Flags: dontcopy
;Source: configs\WEB-INF\classes\log4j.xml; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: db_update\*; DestDir: {app}\db_update; Flags: ignoreversion recursesubdirs createallsubdirs; Languages: 
;Source: D:\work\_Stable\setup\db\update\{#MyAppVer}\*.sql; DestDir: {app}\db_update\sql_scripts; Flags: ignoreversion
Source: {#MySetupDbPath}\db\*.sql; DestDir: {app}\db_update\sql_scripts; Flags: ignoreversion recursesubdirs createallsubdirs
Source: dontcopy\check.bat; Flags: dontcopy


[Run]
;Filename: {app}\postgresql\bin\pg_dump.exe; Parameters: "-h localhost -p 5432 -U postgres -F c -b -v -f ""{app}\backups\db-before-{#MyAppVer}.{#MyAppPatch}-{code:GetTodaysName}.backup"" sc"; Flags: waituntilterminated; StatusMsg: Бэкап текущей БД; Components: backup_db
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " remove"; WorkingDir: {app}\apache-tomcat\bin\; Flags: runhidden
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " install"; WorkingDir: {app}\apache-tomcat\bin\; Flags: runhidden
Filename: {app}\db_update\make_db_backup.bat; WorkingDir: {app}\; Flags: shellexec  waituntilterminated; StatusMsg: StatusMsg: {cm:BackupingCurrentDB}; Components: backup_db
;Filename: NET; Parameters: "STOP ""Apache Tomcat"""; Flags: runhidden; StatusMsg: {cm:StoppingTomcat}
Filename: {app}\db_update\run_db_update.bat; WorkingDir: {app}\db_update\; Flags: shellexec  waituntilterminated; StatusMsg: {cm:UpdatingDatabase}
;Filename: java; Parameters: " -jar --patches_path=""./sql_scripts/"" --log=""./sql_scripts/sql_scripts_log.log"" --sc_properites_path=""{app}/apache-tomcat/webapps/ROOT/WEB-INF/settings.properties"" "; WorkingDir: {app}\db_update\; Flags: shellexec  waituntilterminated; StatusMsg: {cm:UpdatingDatabase}
;Filename: rmdir; Parameters: "/S /Q ""{app}\apache-tomcat\work\Catalina\"""; Flags: shellexec runhidden; StatusMsg: {cm:StartingTomcat}
Filename: NET; Parameters: "START ""Apache Tomcat"""; Flags: runhidden; StatusMsg: {cm:StartingTomcat}


[Components]
Name: backup_db; Description: {cm:MakeDBBackupComponent}; Flags: checkablealone; Types: custom full; Languages: ; ExtraDiskSpaceRequired: 5000000
Name: backup_app; Description: {cm:MakeApplicationBackupComponent}; Flags: checkablealone; Types: custom full; ExtraDiskSpaceRequired: 50000000
[ Code]

var
  PasswordPage: TInputQueryWizardPage;
  DataDirPage: TInputDirWizardPage;

  UserVarPass: String;
  PathToPsql: String;

procedure InitializeWizard();
begin

  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);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var filecontent: String;
	ReturnCode: Integer;
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 = 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;

  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;

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 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);
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 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;


procedure ReplacePathInConfigs();
var filecontent: String;
var pathToConfig: String;
var langForConfig: String;
begin
  LoadStringFromFile(ExpandConstant(CurrentFileName), filecontent);
  langForConfig:=ExpandConstant('{language}');
  pathToConfig:=ExpandConstant('{app}');
  StringChange(pathToConfig,'\','/');
  StringChange(filecontent,'{INSTALL_PATH}',pathToConfig);
  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 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;

Отправлено: 09:23, 25-04-2012 | #1656


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


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

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


вот с помощью ваших советов получилось так:
читать дальше »
Код: Выделить весь код
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Synergy Center"
#ifndef MyAppVer
	#define MyAppVer "2.4"
#endif
#ifndef MyAppPatch
	#define MyAppPatch "11"
#endif
#ifndef MyAppBuild
	#define MyAppBuild "0"
#endif
#define MyAppPublisher ""

#define MyAppURL ""
#define InstalledLocalURL "http://localhost"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{903E5749-D9EC-45A3-A5E1-B0621695F680}
AppName={#MyAppName}
AppVerName={#MyAppName} {#MyAppVer}.{#MyAppPatch}
VersionInfoVersion={#MyAppVer}.{#MyAppPatch}.{#MyAppBuild}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName=D:\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
;OutputDir={#MyOutputDir}
UpdateUninstallLogAppName=no
UsePreviousAppDir=yes
CreateUninstallRegKey=no
;DisableDirPage=yes

OutputBaseFilename=Synergy Center {#MyAppVer}.{#MyAppPatch}
Compression=lzma
SolidCompression=yes
WizardImageFile=wizard\WizModernImage-IS.bmp
WizardSmallImageFile=wizard\WizModernSmallImage-IS.bmp

[Languages]
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

[Registry]
Root: HKLM; Subkey: Software\IVTBelGU\Synergy Center; ValueType: string; ValueName: Version; ValueData: {#MyAppVer}.{#MyAppPatch}; Check: Run_B; Flags: uninsdeletekey

[Dirs]
Name: {app}\apache-tomcat; Flags: uninsneveruninstall; Check: Run_B; Languages: 
Name: {app}\files; Flags: uninsneveruninstall; Check: Run_B; Languages: 
Name: {app}\nginx; Flags: uninsneveruninstall; Check: Run_B; Languages: 
Name: {app}\dbinit; Flags: uninsneveruninstall; Check: Run_B; Languages: 
Name: {app}\backups; Flags: uninsneveruninstall; Check: Run_B; Languages: 
Name: {app}\db_update; Flags: uninsneveruninstall; Check: Run_A; Languages: 
Name: {app}\backups; Flags: uninsneveruninstall; Check: Run_A; Languages: 

[Files]
Source: apache-tomcat\*; DestDir: {app}\apache-tomcat; Check: Run_B; Flags: ignoreversion recursesubdirs createallsubdirs
Source: apache-tomcat\msvcr71.dll; DestDir: {sys}\; Check: Run_B; Flags: onlyifdoesntexist
;Source: {#MyWebContentPath}\*; DestDir: {app}\apache-tomcat\webapps\ROOT; Check: Run_B; Flags: ignoreversion recursesubdirs createallsubdirs
Source: download\*; DestDir: {app}\apache-tomcat\webapps\ROOT\public\download\; Check: Run_B; Flags: ignoreversion recursesubdirs createallsubdirs
Source: configs\WEB-INF\settings.properties; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\; Check: Run_B; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: configs\WEB-INF\classes\log4j.xml; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\; Check: Run_B; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: configs\nginx_to_autorun.reg; DestDir: {app}\nginx\; Check: Run_B; Flags: ignoreversion; AfterInstall: ReplacePathInConfigsReg
Source: nginx\add_reg.bat; DestDir: {app}\nginx\; Check: Run_B; Flags: ignoreversion; AfterInstall: ReplacePathInConfigsReg
Source: nginx\*; DestDir: {app}\nginx; Check: Run_B; Flags: ignoreversion recursesubdirs createallsubdirs
Source: dbinit\*; DestDir: {app}\dbinit; Check: Run_B; Flags: ignoreversion recursesubdirs; AfterInstall: ReplacePathInConfigsPass
Source: UserMenu\*; DestDir: {app}; Check: Run_B; Flags: ignoreversion recursesubdirs; Languages: ; AfterInstall: ReplacePathInConfigs
;Source: {#MySetupDbPath}\db\*.sql; DestDir: {app}\dbinit; Check: Run_B; Flags: ignoreversion




Source: {app}\apache-tomcat\webapps\ROOT\*; DestDir: {app}\backups\Webcontent-before-{#MyAppVer}.{#MyAppPatch}-{code:GetTodaysName}; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs external uninsneveruninstall; Components: backup_app
;Source: {#MyWebContentPath}\*; DestDir: {app}\apache-tomcat\webapps\ROOT; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: StopTomcat
Source: download\*; DestDir: {app}\apache-tomcat\webapps\ROOT\public\download\; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddDefaultToConfig
Source: apache-tomcat\bin\service.bat; DestDir: {app}\apache-tomcat\bin\; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs; BeforeInstall: AddDefaultToConfig
Source: configs\WEB-INF\settings.properties; Check: Run_A; Flags: dontcopy
;Source: configs\WEB-INF\classes\log4j.xml; DestDir: {app}\apache-tomcat\webapps\ROOT\WEB-INF\classes\; Flags: ignoreversion; AfterInstall: ReplacePathInConfigs
Source: db_update\*; DestDir: {app}\db_update; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs; Languages: 
;Source: D:\work\_Stable\setup\db\update\{#MyAppVer}\*.sql; DestDir: {app}\db_update\sql_scripts; Flags: ignoreversion
;Source: {#MySetupDbPath}\db\*.sql; DestDir: {app}\db_update\sql_scripts; Check: Run_A; Flags: ignoreversion recursesubdirs createallsubdirs

Source: dontcopy\netstat1.bat; Flags: dontcopy
Source: dontcopy\check.bat; Check: Run_A; Flags: dontcopy
Source: dontcopy\check.bat; Check: Run_B; Flags: dontcopy

[Icons]
Name: {group}\{#MyAppName}; Check: Run_B; Filename: {#InstalledLocalURL}
;Name: {group}\Start Tomcat; Filename: {app}\TomcatServiceStart.exe; WorkingDir: {app}\; Comment: {cm:RunTomcat}; Flags: runminimized; Components:
;Name: {group}\Stop Tomcat; Filename: {app}\TomcatServiceStop.exe; WorkingDir: {app}\; Comment: {cm:StopTomcat}; Flags: runminimized
Name: {group}\{cm:AdminManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\admin_manual.pdf; Check: Run_B; Languages: ru
Name: {group}\{cm:UserManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\user_manual.pdf; Check: Run_B; Languages: ru
Name: {group}\{cm:AdminManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\ua\manual_admin.pdf; Check: Run_B; Languages: ua
Name: {group}\{cm:UserManual}; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\ua\manual_user.pdf; Check: Run_B; Languages: ua
Name: {group}\{cm:Rukovodstvo_administratora}; Check: Run_B; Filename: {app}\apache-tomcat\webapps\ROOT\public\download\User_Manual\Manual_PDF\Rukovodstvo_administratora.pdf
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Check: Run_B; Filename: {uninstallexe}






[Run]
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " install"; WorkingDir: {app}\apache-tomcat\bin\; Flags: runhidden; Check: Run_B; StatusMsg: Installing Apache Tomcat as Service
Filename: NET; Parameters: "START ""Apache Tomcat"""; Flags: runhidden; Components: PostgreSQL; Check: Run_B; StatusMsg: {cm:StartingTomcat}
Filename: {app}\dbinit\createAndInitDb.bat; Parameters: """{code:GetPsqlPath}""  {language}"; WorkingDir: {app}\dbinit\; Flags: shellexec runhidden waituntilterminated; Check: Run_B; Components: PostgreSQL; StatusMsg: {cm:CreatingDatabase}
Filename: {app}\nginx\add_reg.bat; Check: Run_B; Flags: shellexec runhidden
Filename: {app}\start_nginx.bat; Check: Run_B; Flags: shellexec runhidden
Filename: {app}\dbinit\installAdditionalCards.bat; Parameters: """{code:GetPsqlPath}"" {language}"; WorkingDir: {app}\dbinit\; Check: Run_B; Flags: shellexec runhidden waituntilterminated; Components: PostgreSQL; StatusMsg: {cm:CreatingDatabase}; Tasks: IntstallDefaultShemes
Filename: {app}\Synergy Center.url; Description: {cm:LaunchProgram,{#MyAppName}}; Flags: nowait postinstall skipifsilent shellexec; Check: Run_B; Components: PostgreSQL


;Filename: {app}\postgresql\bin\pg_dump.exe; Parameters: "-h localhost -p 5432 -U postgres -F c -b -v -f ""{app}\backups\db-before-{#MyAppVer}.{#MyAppPatch}-{code:GetTodaysName}.backup"" sc"; Flags: waituntilterminated; StatusMsg: ????? ??????? ??; Components: backup_db
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " remove"; WorkingDir: {app}\apache-tomcat\bin\; Check: Run_A; Flags: runhidden
Filename: {app}\apache-tomcat\bin\service.bat; Parameters: " install"; WorkingDir: {app}\apache-tomcat\bin\; Check: Run_A; Flags: runhidden
Filename: {app}\db_update\make_db_backup.bat; WorkingDir: {app}\; Flags: shellexec  waituntilterminated; StatusMsg: StatusMsg: {cm:BackupingCurrentDB}; Check: Run_A; Components: backup_db
;Filename: NET; Parameters: "STOP ""Apache Tomcat"""; Flags: runhidden; StatusMsg: {cm:StoppingTomcat}
Filename: {app}\db_update\run_db_update.bat; WorkingDir: {app}\db_update\; Flags: shellexec  waituntilterminated; Check: Run_A; StatusMsg: {cm:UpdatingDatabase}
;Filename: java; Parameters: " -jar --patches_path=""./sql_scripts/"" --log=""./sql_scripts/sql_scripts_log.log"" --sc_properites_path=""{app}/apache-tomcat/webapps/ROOT/WEB-INF/settings.properties"" "; WorkingDir: {app}\db_update\; Flags: shellexec  waituntilterminated; StatusMsg: {cm:UpdatingDatabase}
;Filename: rmdir; Parameters: "/S /Q ""{app}\apache-tomcat\work\Catalina\"""; Flags: shellexec runhidden; StatusMsg: {cm:StartingTomcat}
Filename: NET; Parameters: "START ""Apache Tomcat"""; Flags: runhidden; Check: Run_A; StatusMsg: {cm:StartingTomcat}





[Components]
Name: Tomcat; Description: {cm:ApacheTomcatComponent}; Flags: fixed; Types: custom compact full; Check: Skips
Name: PostgreSQL; Description: {cm:PostgresComponent}; Types: custom full; Flags: checkablealone; ExtraDiskSpaceRequired: 16080384; Check: Skips; Languages: 

Name: backup_db; Description: {cm:MakeDBBackupComponent}; Flags: checkablealone; Types: custom full; Languages: ; ExtraDiskSpaceRequired: 5000000; Check: Skip
Name: backup_app; Description: {cm:MakeApplicationBackupComponent}; Flags: checkablealone; Types: custom full; ExtraDiskSpaceRequired: 50000000; Check: Skip

[Tasks]
Name: IntstallDefaultShemes; Description: {cm:IntstallDefaultShemes}; Flags: checkablealone; Components: Postgresql; Languages: 



[ 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
  WizardForm.NextButton.Enabled := false;
  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;




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;




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 CurPageChanged(CurPageID: Integer);
  var ResultCode: Integer;
Begin
	if CurPageID=wpWelcome then
    begin
      WizardForm.NextButton.Enabled := False;
    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);

  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;







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;

var
ReturnCode: Integer;
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);
    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;
        CheckLicense.Checked := false;

  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 RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Corssys\Synergy Center') or
     RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\IVTBelGU\Synergy Center')
   then
    begin

      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;

function Skip:boolean;
var
  sz:Integer;
  s:string;
begin
  Result:=True;
begin
 If not RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Corssys\Synergy Center') or
     RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\IVTBelGU\Synergy Center') then
  Result:=False
end;
end;
function Skips:boolean;
var
  sz:Integer;
  s:string;
begin
  Result:=True;
begin
 If RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Corssys\Synergy Center') or
     RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\IVTBelGU\Synergy Center') then
  Result:=False
end;
end;

а так же будет отдельное удаление:
читать дальше »
Код: Выделить весь код
#define MyAppName "Uninstall"

[Setup]
AppId=proto15
SourceDir=.
OutputDir=Setup
AppName={#MyAppName}
AppVerName={#MyAppName}
AppVersion={#MyAppName}
CreateAppDir=false
OutputBaseFilename={#MyAppName}
Uninstallable=false

ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage
UsePreviousLanguage=no
DisableProgramGroupPage=yes
DisableWelcomePage=yes
DisableDirPage=yes
DisableReadyPage=yes
DisableFinishedPage=yes



[Languages]
Name: ru; MessagesFile: i18n\Russian.isl,i18n\sc_russian.isl
Name: ua; MessagesFile: i18n\Ukrainian-6-5.1.11.isl,i18n\sc_ukrainian.isl

[InstallDelete]



[Files]
Source: {src}\files\*; DestDir: {code:SrcDir}\files\; Flags: ignoreversion recursesubdirs createallsubdirs external; Check: make_copy
Source: {src}\license\*; DestDir: {code:SrcDir}\license\; Flags: ignoreversion recursesubdirs createallsubdirs external; Check: make_copy
Source: dontcopy\check.bat; Flags: dontcopy
Source: dontcopy\checkdb.bat; Flags: dontcopy
[Run]
Filename: {src}\make_db_backup.bat; Parameters: {code:GetPsqlPass}; Flags: shellexec runhidden waituntilterminated; Check: make_copy
Filename: {src}\delbase.bat; Parameters: {code:GetPsqlPass}; Flags: shellexec runhidden waituntilterminated


Filename: NET; Parameters: "STOP ""Apache Tomcat"""; Flags: runhidden
Filename: {src}\apache-tomcat\bin\service.bat; Parameters: " remove"; WorkingDir: {src}\apache-tomcat\bin\; Flags: runhidden; Components: 
Filename: {src}\stop_nginx.bat; WorkingDir: {src}\; Components: 
[ Code]
{ RedesignWizardFormBegin } // Íå óäàëÿòü ýòó ñòðîêó!
// Íå èçìåíÿòü ýòó ñåêöèþ. Îíà ñîçäàíà àâòîìàòè÷åñêè.
var
  ISCustomPage1: TWizardPage;
  SuperBackupCheckBox: TNewCheckBox;
  Edit_1: TNewEdit;
  WhereButton: TNewButton;
  DataDirPage: TInputDirWizardPage;
  PasswordPage: TInputQueryWizardPage;
  UserVarPass: String;

procedure RePlaceTextinFile(FilePath:string; find:string; replace:string);
var
  S: TArrayOfString;
  i : Integer;
begin
  if not FileExists(FilePath) then begin MsgBox('Ôàéë íå íàéäåí ' + FilePath, mbError, mb_Ok); Exit;end; // åñëè ôàéëà íåò, âûõîäèì
  LoadStringsFromFile(FilePath, S); // çàãðóæàåì ôàéë
  for i:= 0 to GetArrayLength(S)-1 do begin
    if (Pos(AnsiUpperCase(find), AnsiUpperCase(S[i])) > 0) then begin
      StringChangeEx(S[i], find, replace, True);
    end;
  end;
  SaveStringsToFile(FilePath, S, False); // ñîõðàíÿåì ôàéë
end;

procedure make_copy_again(Sender: TObject); forward;
procedure ButtonOnClick(Sender: TObject); forward;


procedure RedesignWizardForm;
begin
  { Creates custom wizard page }
  ISCustomPage1 := CreateCustomPage(wpSelectDir, 'BackUpPage', 'ISCustomPage1_Description');

  { ISCustomPage1 }
  with ISCustomPage1.Surface do
  begin
    Name := 'ISCustomPage1';
  end;

  { SuperBackupCheckBox }
  SuperBackupCheckBox := TNewCheckBox.Create(WizardForm);
  with SuperBackupCheckBox do
  begin
    Name := 'SuperBackupCheckBox';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(16);
    Top := ScaleY(24);
    Width := ScaleX(169);
    Height := ScaleY(17);
    Hint := 'áýêàï íóæåí?';
    Caption := 'Ìíå áû ðåçåðâíóþ êîïèþ';

    ShowHint := True;
    OnClick := @make_copy_again;
  end;

  { Edit_1 }
  Edit_1 := TNewEdit.Create(WizardForm);
  with Edit_1 do
  begin
    Name := 'Edit_1';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(16);
    Top := ScaleY(56);
    Width := ScaleX(393);
    Height := ScaleY(21);
    Text := 'C:\';
  end;

  { WhereButton }
  WhereButton := TNewButton.Create(WizardForm);
  with WhereButton do
  begin
    Name := 'WhereButton';
    Parent := ISCustomPage1.Surface;
    Left := ScaleX(168);
    Top := ScaleY(80);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'êóäà?';
    OnClick := @ButtonOnClick;
  end;

  SuperBackupCheckBox.TabOrder := 0;
  Edit_1.TabOrder := 1;
  WhereButton.TabOrder := 2;

{ ReservationBegin }
  // Âû ìîæåòå äîáàâèòü âàø êîä çäåñü.

{ ReservationEnd }
end;
// Íå èçìåíÿòü ýòó ñåêöèþ. Îíà ñîçäàíà àâòîìàòè÷åñêè.
{ RedesignWizardFormEnd } // Íå óäàëÿòü ýòó ñòðîêó!

function make_copy: Boolean;
begin
    Result:=SuperBackupCheckBox.Checked;
end;





procedure make_copy_again (Sender: TObject);
begin
if SuperBackupCheckBox.Checked = false then
  begin
    Edit_1.Enabled:= false;
    Edit_1.visible:= false;
    WhereButton.Enabled:= false;
    WhereButton.visible:= false;
  end
else
  begin
    Edit_1.Enabled:= true;
    Edit_1.visible:= true;
    WhereButton.Enabled:= true;
    WhereButton.visible:= true;


  end;
end;

var
  DataDir: String;

function SrcDir(Param: String): String;
begin
  Result := DataDir;
end;

procedure ButtonOnClick(Sender: TObject);
var
  res: Boolean;
begin
  DataDir := ExpandConstant('{src}');
  res := BrowseForFolder('Âûáåðèòå ïàïêó èç ñïèñêà è íàæìèòå «ÎÊ»', DataDir, True);
  if res then
    begin
      Edit_1.Text := DataDir;
    end;
    RePlaceTextinFile(ExpandConstant('{src}\make_db_backup.bat'), '%~dp0\backups', DataDir);
end;
function PUTT(filepath:string):string;
var
S: TArrayOfString;
i : Integer;
begin
if not FileExists(FilePath) then begin MsgBox('Ôàéë íå íàéäåí ' + FilePath, mbError, mb_Ok); Exit;end; // åñëè ôàéëà íåò, âûõîäèì
LoadStringsFromFile(FilePath, S); // çàãðóæàåì ôàéë
result := S[0];
end;
procedure InitializeWizard();
begin
  RedesignWizardForm;
  Edit_1.Text := ExpandConstant('{userdocs}');
  Edit_1.Enabled:= false;
  Edit_1.visible:= false;
  WhereButton.Enabled:= false;
  WhereButton.visible:= false;
  DataDirPage := CreateInputDirPage(wpSelectDir, ExpandConstant('Äîáðî ïîæàëîâàòü'), ExpandConstant('â ïðîöåññ Óäàëåíèå SC'), ExpandConstant('Ñëåäóþòå èíñòðóêöèè. íàæìèòå äàëåå ÷òîá ïðîäîëæèòü óäàëåíèå èëè îòìåíà ÷òîá åå îòìåíèòü'), False, '' );
  PasswordPage := CreateInputQueryPage(DataDirPage.ID, ExpandConstant('Ïàðîëü') ,ExpandConstant('ê áàççå äàííûõ'), ExpandConstant('Ââåäèòå') );
  PasswordPage.Add(SetupMessage(msgPasswordEditLabel), True);
 end;

function NextButtonClick(CurPageID: Integer): Boolean;
var filecontent: String;
  ReturnCode: Integer;

begin
  Result := True;


  if CurPageID = PasswordPage.ID then begin
  UserVarPass := PasswordPage.Edits[0].Text;
  ExtractTemporaryFile('check.bat');
  Exec (ExpandConstant ('{tmp}\check.bat'), PasswordPage.Edits[0].Text + ' "' + PUTT(ExpandConstant('{src}\text.txt')) + '"', ExpandConstant ( '{tmp}' ), SW_HIDE, ewWaitUntilTerminated, ReturnCode );
  if ReturnCode = 0 then
    begin
      Result := True;
    end
  else
    begin
      MsgBox(ExpandConstant('Íå âåðíûé ïàðîëü'), mbError, MB_OK);
      Result := False;
    end;
  DeleteFile ( ExpandConstant ('{tmp}\check.bat') );
  end;

end;
function GetPsqlPass(Param: String): String;
begin
  Result := UserVarPass;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
end;


как это все объединить? установку, обновление и удаление?

Отправлено: 09:24, 25-04-2012 | #1657


Аватара для Gnom_aka_Lexander

Ветеран


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

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


R.i.m.s.k.y., тут посмотри.

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

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

Отправлено: 11:41, 25-04-2012 | #1658


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Лександер, так этож дельфи, а не инно

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 11:48, 25-04-2012 | #1659


Аватара для Johny777

Ветеран


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

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


Цитата Temyraz@fb:
работает так как надо, а потом нет »
что именно не работает?
мой совет
знаешь как я делаю? Прежде чем доабавить что-то обширное в код я сначала добавляю, но не сохраняю (или делаю резервную копию) пока не протестирую и не убежусь что всё работает. Никогда не добавлял несколько различных процедур сразу. Всё по чуть чуть. И тесты, тесты. У меня в коде везде пометки что к чему относится. Что я изменил и для чего. Если начинаются косяки, то сразу становится понятно где
А теперь вопрос. До того как ты начал добавлять компонеты код работал? (функции кнопки далее, в зависимости от чекбоксов и всё остальное)
насчёт деинсталятора посмотри моё самое последнее сообщение по деинсталлу. Там не только он, но ещё и несколько строк в основном скрипте, без которых никак
Цитата Temyraz@fb:
make_copy_again »
помнится это не совсем рабочий вариант
лучше посмотри пример CopyFiles_{code;SrcDir}.iss
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:50, 25-04-2012 | #1660



Компьютерный форум 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




 
Переход