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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


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

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

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

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

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


Ссылка на архив предыдущей темы (также можно скачать из вложения)

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:06, 23-08-2009

 

Старожил


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

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


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

Отправлено: 03:13, 27-05-2010 | #1831



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

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


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

Ветеран


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

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


Цитата EN130:
Отрабатывает нормальна. Чего я не понимаю? »
Открывем хелп, читаем

Код: Выделить весь код
Comments may be embedded in expression by using a slash and an asterisk. For example:

#emit Var1 /* this is a comment */ + Var2 /* this is a comment */


Also one line comments are supported. Those comments must begin with a semicolon. Whole text after the semicolon up to the end of a line is considered comment.

#emit Var1 + Var2 ; this is a comment


Please note that line spanning feature is triggered before any further processing, thus a comment may occupy more than one line:

#emit Var1 + Var2 ; this is \
  a comment


You can put "comments" in the script (which are ignored by the compiler) by placing a semicolon at the beginning of a line. For example:

; This is a comment. I could put reminders to myself here...
В общем за пределами кода ";" определяет строку комментария, а т.к. точка с запятой используется для разделения параметров, то не может использоваться в любом месте строки, только в начале.

В коде в любом месте строки "//" или " /* */ " в середине строки.
Без кавык есссно.

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


Отправлено: 08:53, 27-05-2010 | #1832


Аватара для EN130

Старожил


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

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


Все компилировалось, вот только МП3 не играет. А судя по тому, что и кнопок для управления проигрыванием нет, то вся часть про МП3 не отрабатывается.
читать дальше »
HTML код: Выделить весь код
; Script generated by the Ìàñòåð Inno Setup Script. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Äåìèóðãè. Äèëîãèÿ" #define MyAppVerName "Äåìèóðãè 1.07 + 1.02" #define MyAppPublisher "EN130" #define MyAppURL "HTTP://WWW.USDE.RU" ; --- Íà÷àëî ãëàâíûõ ïàðàìåòðîâ [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={{97695CE3-87D0-4F8E-A417-C0BBC3AF4377} AppName={#MyAppName} AppVerName={#MyAppVerName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes LicenseFile=F:\ðàáîòà\Etherlords\Ëèöåíçèîííîå ñîãëàøåíèå.rtf OutputDir=F:\ðàáîòà\Etherlords\123 OutputBaseFilename=setup SetupIconFile=F:\ðàáîòà\Etherlords\ico.ico Compression=lzma SolidCompression=yes [Languages] Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "F:\ðàáîòà\Etherlords\Etherlords\Äåìèóðãè 2\Etherlords2.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "F:\ðàáîòà\Etherlords\Etherlords\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" ; --- Êîíåö ãëàâíûõ ïàðàìåòðîâ ; --- Ðàçáèâàíèå íà òîìà [Setup] DiskSpanning=yes DiskSliceSize=730000000 ; --- Ñîáñòâåííîå ñîîáùåíèå ïðè íàæàòè íà êíîïêó îòìåíà [code] procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean); begin Cancel:=False; Confirm:=False; if MsgBox('Äåéñòâèòåëüíî îòìåíèòü óñòàíîâêó ïðèëîæåíèÿ?', mbError, MB_YESNO) = idYes then Cancel:=true; end; // --- Ñëàéäøîó [Setup] WindowVisible=yes WindowResizable=no WindowShowCaption=no [Files] Source: C:\isxbb.dll; DestDir: {tmp}; Flags: dontcopy Source: C:\1.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\2.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\3.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\4.jpg; DestDir: {tmp}; Flags: dontcopy [code] const BACKGROUND=6; TIMER=16; function isxbb_AddImage(Image: PAnsiChar; Flags: Cardinal): Integer; external 'isxbb_AddImage@files:isxbb.dll stdcall'; function isxbb_Init(hWnd: Integer): Integer; external 'isxbb_Init@files:isxbb.dll stdcall'; function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer; external 'isxbb_StartTimer@files:isxbb.dll stdcall'; function isxbb_KillTimer(Flags: Cardinal): Integer; external 'isxbb_KillTimer@files:isxbb.dll stdcall'; procedure InitializeWizard(); begin ExtractTemporaryFile('1.jpg'); isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND); isxbb_Init(StrToInt(ExpandConstant('{hwnd}'))); end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep=ssInstall then begin ExtractTemporaryFile('2.jpg'); ExtractTemporaryFile('3.jpg'); ExtractTemporaryFile('4.jpg'); isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER); isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER); isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER); isxbb_Init(StrToInt(ExpandConstant('{hwnd}'))); //Òàéìåð ïîêàçà èçîáðàæåíèé â ñêóíäàõ (3?) isxbb_StartTimer(1,BACKGROUND) end //íå çàöèêëåíî. else if CurStep=ssPostInstall then isxbb_KillTimer(BACKGROUND); end; // --- ïðîèãðûâàíèå ÌÏ3 [files] Source: "C:\BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy ;ôàéë çâóêà Source: "C:\Etherlords.mp3"; DestDir: "{tmp}"; Flags: dontcopy [code] const BASS_ACTIVE_STOPPED = 0; BASS_ACTIVE_PLAYING = 1; BASS_ACTIVE_STALLED = 2; BASS_ACTIVE_PAUSED = 3; BASS_SAMPLE_LOOP = 4;//ïîâòîðÿòü function mciSendString(lpstrCommand: string; lpstrReturnString: string; uReturnLength:integer; hwndCallback:integer):integer; external 'mciSendStringA@winmm.dll stdcall'; procedure StopSound(Sender: TObject); begin mciSendString(ExpandConstant('stop {tmp}\Etherlords.mp3'),'NULL',0,0) end; procedure playSound(Sender: TObject); begin mciSendString(ExpandConstant('play {tmp}\Etherlords.mp3'),'NULL',0,0) end; procedure InitializeWizard2(); var ButtonStop: TButton; ButtonPlay: TButton; begin ExtractTemporaryFile(ExpandConstant('Etherlords.mp3')) mciSendString(ExpandConstant('stop {tmp}\Etherlords.mp3'),'NULL',0,0) mciSendString(ExpandConstant('play {tmp}\Etherlords.mp3'),'NULL',0,0) ButtonStop := TButton.Create(WizardForm); ButtonPlay := TButton.Create(WizardForm); with ButtonStop do begin Parent := WizardForm; Caption :='ñòîï'; Left := ScaleX(8); Top :=320 Width := ScaleX(43); Height := ScaleY(33); TabOrder := 0; OnClick:=@StopSound end; with ButtonPlay do begin Parent := WizardForm; Caption :='èãðà'; Left := ScaleX(8); Top :=190 Width := ScaleX(43); Height := ScaleY(33); TabOrder := 0; OnClick:=@playSound end; end; // --- Ñâîÿ êàðòèíêà âñåðõó è ñëåâà. 164x314 ïåðâàÿ êàðòèíêà. 55x55 âòîðàÿ êàðòèíêà. [Setup] WizardImageFile=C:\D1.bmp WizardSmallImageFile=C:\D2.bmp // --- Ïðîâåðêà ñâîáîäíîãî ìåñòà. [code] const NeedSize = 3072; //Ïðîïèñàòü, ñêîëüêî ìåãàáàéò íåîáõîäèìî DRIVE_UNKNOWN = 0; DRIVE_NO_ROOT_DIR = 1; DRIVE_REMOVEABLE = 2; DRIVE_FIXED = 3; DRIVE_REMOTE = 4; DRIVE_CDROM = 5; DRIVE_RAMDISK = 6; function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall'; function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall'; procedure InitializeWizard3(); var Path: String; FreeMB, TotalMB: Cardinal; ListBox: TListBox; drives: DWORD; i: integer; begin ListBox:= TListBox.Create(WizardForm); ListBox.Top:= 120; ListBox.Width:= 300; ListBox.Height:= ScaleY(90); ListBox.Parent:= WizardForm.SelectDirPage; drives:= GetLogicalDrives(); for i:= 0 to 31 do begin if (drives and (1 shl i)) > 0 then begin Path:= chr(ord('A')+i)+':'; if GetDriveType(Path) = DRIVE_FIXED then begin GetSpaceOnDisk(Path, True, FreeMB, TotalMB); ListBox.Items.Add(Path + ' - Âñåãî: ' + IntToStr(TotalMB) + 'Ìá - Ñâîáîäíî: ' + IntToStr(FreeMB) + 'Ìá'); end; end; end; end; function NextButtonClick(CurPageID: Integer): Boolean; var Path: String; FreeMB, TotalMB: Cardinal; begin Result:= True; if CurPageID = wpSelectDir then begin Path:= ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if FreeMB < NeedSize then begin MsgBox('Íåäîñòàòî÷íî ìåñòà íà äèñêå!', mbInformation, MB_OK) Result:= False; end; end; end; // --- íåîáõîäèìî åùå Í ìåñòà function NextButtonClick2(CurPageID: Integer): Boolean; var Path: String; FreeMB, TotalMB: Cardinal; begin Result:= True; if CurPageID = wpSelectDir then begin Path:= ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if FreeMB < NeedSize then begin MsgBox('Äëÿ óñòàíîâêè ïðèëîæåíèÿ íåîáõîäèìî '+ IntTostr(NeedSize)+ ' MB,'#13+ 'à íà âûáðàííîì Âàìè äèñêå äîñòóïíî òîëüêî '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK) Result := False; end; end; end;


Пробовал для проигрывания МП3 использовать такой код
читать дальше »
HTML код: Выделить весь код
; Script generated by the Ìàñòåð Inno Setup Script. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Äåìèóðãè. Äèëîãèÿ" #define MyAppVerName "Äåìèóðãè 1.07 + 1.02" #define MyAppPublisher "EN130" #define MyAppURL "HTTP://WWW.USDE.RU" ; --- Íà÷àëî ãëàâíûõ ïàðàìåòðîâ [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={{97695CE3-87D0-4F8E-A417-C0BBC3AF4377} AppName={#MyAppName} AppVerName={#MyAppVerName} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} AllowNoIcons=yes LicenseFile=F:\ðàáîòà\Etherlords\Ëèöåíçèîííîå ñîãëàøåíèå.rtf OutputDir=F:\ðàáîòà\Etherlords\123 OutputBaseFilename=setup SetupIconFile=F:\ðàáîòà\Etherlords\ico.ico Compression=lzma SolidCompression=yes [Languages] Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] Source: "F:\ðàáîòà\Etherlords\Etherlords\Äåìèóðãè 2\Etherlords2.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "F:\ðàáîòà\Etherlords\Etherlords\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" ; --- Êîíåö ãëàâíûõ ïàðàìåòðîâ ; --- Ðàçáèâàíèå íà òîìà [Setup] DiskSpanning=yes DiskSliceSize=730000000 ; --- Ñîáñòâåííîå ñîîáùåíèå ïðè íàæàòè íà êíîïêó îòìåíà [code] procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean); begin Cancel:=False; Confirm:=False; if MsgBox('Äåéñòâèòåëüíî îòìåíèòü óñòàíîâêó ïðèëîæåíèÿ?', mbError, MB_YESNO) = idYes then Cancel:=true; end; // --- Ñëàéäøîó [Setup] WindowVisible=yes WindowResizable=no WindowShowCaption=no [Files] Source: C:\isxbb.dll; DestDir: {tmp}; Flags: dontcopy Source: C:\1.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\2.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\3.jpg; DestDir: {tmp}; Flags: dontcopy Source: C:\4.jpg; DestDir: {tmp}; Flags: dontcopy [code] const BACKGROUND=6; TIMER=16; function isxbb_AddImage(Image: PAnsiChar; Flags: Cardinal): Integer; external 'isxbb_AddImage@files:isxbb.dll stdcall'; function isxbb_Init(hWnd: Integer): Integer; external 'isxbb_Init@files:isxbb.dll stdcall'; function isxbb_StartTimer(Seconds: Integer; Flags: Cardinal): Integer; external 'isxbb_StartTimer@files:isxbb.dll stdcall'; function isxbb_KillTimer(Flags: Cardinal): Integer; external 'isxbb_KillTimer@files:isxbb.dll stdcall'; procedure InitializeWizard(); begin ExtractTemporaryFile('1.jpg'); isxbb_AddImage(ExpandConstant('{tmp}')+'\1.jpg',BACKGROUND); isxbb_Init(StrToInt(ExpandConstant('{hwnd}'))); end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep=ssInstall then begin ExtractTemporaryFile('2.jpg'); ExtractTemporaryFile('3.jpg'); ExtractTemporaryFile('4.jpg'); isxbb_AddImage(ExpandConstant('{tmp}')+'\2.jpg',BACKGROUND or TIMER); isxbb_AddImage(ExpandConstant('{tmp}')+'\3.jpg',BACKGROUND or TIMER); isxbb_AddImage(ExpandConstant('{tmp}')+'\4.jpg',BACKGROUND or TIMER); isxbb_Init(StrToInt(ExpandConstant('{hwnd}'))); //Òàéìåð ïîêàçà èçîáðàæåíèé â ñêóíäàõ (3?) isxbb_StartTimer(1,BACKGROUND) end //íå çàöèêëåíî. else if CurStep=ssPostInstall then isxbb_KillTimer(BACKGROUND); end; // --- ïðîèãðûâàíèå ÌÏ3 [Files] Source: "C:\BASS.dll"; DestDir: "{tmp}"; Flags: dontcopy Source: "C:\Etherlords.mp3"; DestDir: "{tmp}"; Flags: dontcopy [code] const BASS_SAMPLE_LOOP = 4; // ïîâòîðåíèå (âèäèìî ðàç) type HSTREAM = DWORD; // òèï çâóêîâîãî ïîòîêà function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean; external 'BASS_Init@files:BASS.dll stdcall delayload'; function BASS_StreamCreateFile(mem: BOOL; f: PAnsiChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM; external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload'; function BASS_Start(): Boolean; external 'BASS_Start@files:BASS.dll stdcall delayload'; function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean; external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload'; function BASS_Stop(): Boolean; external 'BASS_Stop@files:BASS.dll stdcall delayload'; function BASS_Free(): Boolean; external 'BASS_Free@files:BASS.dll stdcall delayload'; procedure InitializeWizard2(); var Name1: string; i: Integer; begin ExtractTemporaryFile('BASS.dll'); ExtractTemporaryFile('Etherlords.mp3'); if BASS_Init(-1, 44100, 0, 0, 0) then begin BASS_Start(); Name1:=ExpandConstant('{tmp}\Etherlords.mp3'); i:=BASS_StreamCreateFile(FALSE, PAnsiChar(Name1), 0, 0, 4); if i <> 0 then begin BASS_ChannelPlay(i, True); end; end; end; procedure DeInitializeSetup(); begin BASS_Stop(); BASS_Free(); end; // --- Ñâîÿ êàðòèíêà âñåðõó è ñëåâà. 164x314 ïåðâàÿ êàðòèíêà. 55x55 âòîðàÿ êàðòèíêà. [Setup] WizardImageFile=C:\D1.bmp WizardSmallImageFile=C:\D2.bmp // --- Ïðîâåðêà ñâîáîäíîãî ìåñòà. [code] const NeedSize = 3072; //Ïðîïèñàòü, ñêîëüêî ìåãàáàéò íåîáõîäèìî DRIVE_UNKNOWN = 0; DRIVE_NO_ROOT_DIR = 1; DRIVE_REMOVEABLE = 2; DRIVE_FIXED = 3; DRIVE_REMOTE = 4; DRIVE_CDROM = 5; DRIVE_RAMDISK = 6; function GetLogicalDrives: DWORD; external 'GetLogicalDrives@kernel32.dll stdcall'; function GetDriveType(nDrive: String): Longint; external 'GetDriveTypeA@kernel32.dll stdcall'; procedure InitializeWizard3(); var Path: String; FreeMB, TotalMB: Cardinal; ListBox: TListBox; drives: DWORD; i: integer; begin ListBox:= TListBox.Create(WizardForm); ListBox.Top:= 120; ListBox.Width:= 300; ListBox.Height:= ScaleY(90); ListBox.Parent:= WizardForm.SelectDirPage; drives:= GetLogicalDrives(); for i:= 0 to 31 do begin if (drives and (1 shl i)) > 0 then begin Path:= chr(ord('A')+i)+':'; if GetDriveType(Path) = DRIVE_FIXED then begin GetSpaceOnDisk(Path, True, FreeMB, TotalMB); ListBox.Items.Add(Path + ' - Âñåãî: ' + IntToStr(TotalMB) + 'Ìá - Ñâîáîäíî: ' + IntToStr(FreeMB) + 'Ìá'); end; end; end; end; function NextButtonClick(CurPageID: Integer): Boolean; var Path: String; FreeMB, TotalMB: Cardinal; begin Result:= True; if CurPageID = wpSelectDir then begin Path:= ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if FreeMB < NeedSize then begin MsgBox('Íåäîñòàòî÷íî ìåñòà íà äèñêå!', mbInformation, MB_OK) Result:= False; end; end; end; // --- íåîáõîäèìî åùå Í ìåñòà function NextButtonClick2(CurPageID: Integer): Boolean; var Path: String; FreeMB, TotalMB: Cardinal; begin Result:= True; if CurPageID = wpSelectDir then begin Path:= ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); if FreeMB < NeedSize then begin MsgBox('Äëÿ óñòàíîâêè ïðèëîæåíèÿ íåîáõîäèìî '+ IntTostr(NeedSize)+ ' MB,'#13+ 'à íà âûáðàííîì Âàìè äèñêå äîñòóïíî òîëüêî '+ IntToStr(FreeMB)+' MB', mbCriticalError, MB_OK) Result := False; end; end; end;


но музыка все равно и не играет. Может подскажете в чем проблема?

-------
CQ! CQ! CQ!
Вдруг чего просьба сильно не БАН!!! АЙ!! ТЕ!


Отправлено: 11:31, 27-05-2010 | #1833


Аватара для EN130

Старожил


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

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


--- Добавил.
Понял в чем проблема.
Подскажите, как правильно переименовать несколько procedure InitializeWizard(); так, чтобы они не конфликтовали?

-------
CQ! CQ! CQ!
Вдруг чего просьба сильно не БАН!!! АЙ!! ТЕ!


Отправлено: 12:13, 27-05-2010 | #1834


Аватара для Habetdin


Автор проектов


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

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


cleric1985_n, тогда так:
Код: Выделить весь код
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
  Res: Integer;
begin
  case CurUninstallStep of
    usPostUninstall:
begin
//Проверяем присутствие папки после удаления
 If DirExists(ExpandConstant('{app}')+'')
   then
//Создаем диалог с тремя кнопками
      case MsgBox('Папка "'+ExpandConstant('{app}')+'" не пуста.'#13#13 +
       '"Да" – полное удаление всех файлов в папке, включая саму папку.' #13#13 +
       '"Нет" – открыть папку в проводнике, чтобы вручную удалить файлы.'#13#13 +
       '"Отмена" – ничего не делать, удалить папку позже самостоятельно.', mbInformation, MB_YESNOCANCEL)
      of IDYES:
   begin
if not DelTree(ExpandConstant('{app}')+'', True, True, True)
 then
   MsgBox('Папка не удалена.' #13#13 'Папка или один из файлов в ней задействованы другим приложением.', mbError, MB_OK);
end;
 IDNO:
begin
if not ShellExec('open', ExpandConstant('{app}')+'', '', '', SW_SHOWMAXIMIZED, ewNoWait, Res)
 then
   MsgBox('Ошибка открытия.' #13#13 'Папка не найдена.', mbError, MB_OK);
end;
 IDCANCEL:
begin
end;
end;
end;
end;
end;

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке

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

Отправлено: 14:25, 27-05-2010 | #1835


Аватара для nik1967

Старожил


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

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


EN130,
Где-нибудь в конце скрипта дописываете:
Код: Выделить весь код
Procedure InitializeWizard();
 begin
   InitializeWizard1();
   InitializeWizard2();
   InitializeWizard3();
   InitializeWizard4();
   InitializeWizard5();
   InitializeWizard7();
   InitializeWizard8(); // сколько будете использовать процедур InitializeWizard.
 end;
А все процедуры InitializeWizard переименовываете по порядку: InitializeWizard() в InitializeWizard1(), следующий InitializeWizard() в InitializeWizard2(), и так далее.

Можно так-же и другие процедуры использовать:
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
 begin
   CurPageChanged1(CurPageID);
   CurPageChanged2(CurPageID);
   CurPageChanged3(CurPageID);
   CurPageChanged4(CurPageID);
 end;  
procedure CurStepChanged(CurStep: TSetupStep);
 begin
   CurStepChanged1(CurStep);
   CurStepChanged2(CurStep);
 end;
Например.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:10, 27-05-2010 | #1836


Старожил


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

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


Habetdin, Так то так, но это уже через секцию [code]. Значит я так понял - что реализовать это нельзя...)

Отправлено: 17:56, 27-05-2010 | #1837


Аватара для semiono

Ветеран


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

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


Реестр:


Код: Выделить весь код
procedure DeinitializeSetup();
var
  S: TArrayOfString;
  F: String;  V1: String;  V2: String;  V3: String;
begin
  RegQueryBinaryValue(HKLM, 'Software\Classes\Trilogy', 'Value1', V1)
  RegQueryBinaryValue(HKLM, 'Software\Classes\Trilogy', 'Value2', V2)
  RegQueryBinaryValue(HKLM, 'Software\Classes\Trilogy', 'Value3', V3)
  
  F := ExpandConstant('{reg:HKLM32\Software\VST,VSTPluginsPath|{syswow64}\Plugins}\Trilogy\Trilogy.inf');
  SetArrayLength(S, 12);
// -------------------------------------------------------------------------------------------------------------------------------------
  S[00] := '[Version]'
  S[01] := 'Signature=$Windows NT$'
  S[02] := ''
  S[03] := '[DefaultInstall]'
  S[04] := 'AddReg=Add.Reg'
  S[05] := ''
  S[06] := '[Add.Reg]'

  S[07] := 'HKLM,"Software\Classes\Trilogy","Value1",0x24001,"' + ExpandConstant(V1) + '"'
  S[08] := 'HKLM,"Software\Classes\Trilogy","Value2",0x24001,"' + V2 + '"'
  S[09] := 'HKLM,"Software\Classes\Trilogy","Value3",0x24001,"' + V3 + '"'
  
  S[10] := 'HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\Trilogy.exe",,0x4000,"' + ExpandConstant('{reg:HKLM32\Software\VST,Proton.exe|{syswow64}\Proton}') + '\Trilogy\Trilogy.exe"'
  S[11] := 'HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\Trilogy.exe","Path",0x4000,"' + ExpandConstant('{reg:HKLM32\Software\VST,Proton.exe|{syswow64}\Proton}') + '\Trilogy"'
// -------------------------------------------------------------------------------------------------------------------------------------
  SaveStringsToFile(F, S, False);
end;
Результат:


Помогите решить задачу? Думаю из кода понятно что я хочу? Надо написать INF-файл
Может REG_NONE не поддерживается? Или надо строку конвертировать как-то? Как?

-------
Полезное сообщение


Отправлено: 09:10, 28-05-2010 | #1838


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

Ветеран


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

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


Цитата semiono:
Может REG_NONE не поддерживается? Или надо строку конвертировать как-то? Как? »
Я в таких случаях шаманю с командой Reg Add, колдунство там сильное. Или если параметр статичен - просто импортирую файл реестра с нужными ветками.
Можете набрать в командной строке Reg Add /? - почитайте.

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


Отправлено: 09:34, 28-05-2010 | #1839


Аватара для BaRSPRO

Новый участник


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

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


всем доброго времени суток, возможно глупый вопрос, но все же он есть, как указать путь распаковки только одному архиву?

Отправлено: 10:04, 28-05-2010 | #1840



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход