![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3] |
|
Скрипты Inno Setup. Помощь и советы [часть 3]
|
Ветеран Сообщения: 1133 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 |
|
------- Отправлено: 00:28, 04-11-2010 |
Старожил Сообщения: 398
|
Профиль | Отправить PM | Цитировать Ктонить встречался с кодом\dll'кой isProgressBar от ExpeditorR, для создания "технического" прогресс-бара? Как я понял, он создает отдельную страницу с собственным прогресс-баром. А можно ли сделать так, чтоб его прогресс-бар отображался поверх\вместо стандартного, на стандартной странице инсталляции?
|
Отправлено: 00:19, 31-08-2011 | #2971 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать El Sanchez, как заставить срабатывать процедуру после клика по определенному объекту? потому что только после второго клика она работала
вот вопрос, а задачу я сделал по-другому, теперь мне интересно на будущее и еще, можно ли в зависимых задачах писать разные groupdescription? если нет, то как это обойти? возможно ли такое? |
Отправлено: 11:34, 31-08-2011 | #2972 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать как сделть чтоб интлятор во время установки сам определил папку установки
Наприmер GTA San Andreas Usef Files а если выбранна другая папка выходило сообщение что не верная папка |
Отправлено: 16:29, 31-08-2011 | #2973 |
![]() Сообщения: 3650
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 18:48, 31-08-2011 | #2974 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Здравствуйте!!!
![]() ![]() ![]() |
Отправлено: 18:21, 01-09-2011 | #2975 |
Ветеран Сообщения: 510
|
Профиль | Отправить PM | Цитировать Kizekil
Цитата:
|
|
Отправлено: 21:11, 01-09-2011 | #2976 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Как сделать чтоб была установка direct x и других нужных вещей?И как поставить изображение на всё окно инсталлятора (только на странице привествия)?
|
Последний раз редактировалось Kizekil, 02-09-2011 в 16:19. Отправлено: 16:11, 02-09-2011 | #2977 |
Новый участник Сообщения: 47
|
Профиль | Отправить PM | Цитировать Цитата insombia:
Name: rus; Name: compiler:Name\Russian.isl [CustomMessages] rus.hour= часов rus.min= мин rus.sec= сек Source: compiler:innocallback.dll; DestDir: {tmp}; Flags: dontcopy; [code] type TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord); var StartInstall: Integer; TimeLabel: TLabel; TimerID: Longword; function GetTickCount: DWord; external 'GetTickCount@kernel32'; function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32'; function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload'; Function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End; Function TicksToTime(Ticks: DWord; h,m,s: String; detail: Boolean): String; Begin if detail then {hh: mm:ss format} Result:= PADZ(IntToStr(Ticks/3600000), 2) +':'+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +':'+ PADZ(IntToStr(Ticks/1000 - Ticks/1000/60*60), 2) else if Ticks/3600 >= 1000 then {more than hour} Result:= IntToStr(Ticks/3600000) +h+' '+ PADZ(IntToStr((Ticks/1000 - Ticks/1000/3600*3600)/60), 2) +m else if Ticks/60 >= 1000 then {1..60 minutes} Result:= IntToStr(Ticks/60000) +m+' '+ IntToStr(Ticks/1000 - Ticks/1000/60*60) +s else Result:= Format('%.1n', [Abs(Ticks/1000)]) +s {less than one minute} End; procedure GetTime(HandleW, Msg, idEvent, TimeSys: LongWord); var Remaining: Integer; begin with WizardForm.ProgressGauge do begin if position > 0 then Remaining:= trunc((GetTickCount - StartInstall) * Abs((max - position)/position)) TimeLabel.Caption:= 'Осталось ' + TicksToTime(Remaining, cm('hour'), cm('min'), cm('sec'), false) if (Remaining = 0) then TimeLabel.Caption:= 'Завершение...' end; end; procedure InitializeWizard(); begin TimeLabel:= TLabel.Create(WizardForm) TimeLabel.SetBounds(ScaleX(0), ScaleY(80), ScaleX(457), ScaleY(20)); TimeLabel.AutoSize:= False TimeLabel.Transparent:= True; TimeLabel.Parent:= WizardForm.InstallingPage; end; procedure CurStepChanged(CurStep: TSetupStep); begin If CurStep = ssInstall then begin StartInstall:= GetTickCount TimerID:= SetTimer(0,0, 500, WrapTimerProc(@GetTime, 4)) end; end; procedure DeinitializeSetup(); begin KillTimer(0, TimerID) end; Цитата Kizekil:
ShowTasksTreeLines=true [Tasks] Name: additional; Description: "Дополнительные компоненты"; Name: additional\dx; Description: "Обновить DirectX"; Name: additional\vcr; Description: "Обновить Visual C++"; [Run] Filename: {src}\Redist\DirectX.exe; Tasks: additional\dx; Parameters: /silent; StatusMsg: Обновление DirectX... Filename: {src}\Redist\MS Visual C++ 2005 SP1.exe; Tasks: additional\vcr; Parameters: /q; StatusMsg: Обновление Visual C++... Цитата Kizekil:
Source: "C:\Program Files\Inno Setup 5\Img2.bmp"; DestDir: {tmp}; Flags: dontcopy [code] var WelcomeLabel1, WelcomeLabel2, FinishedLabel, FinishedHeadingLabel: TLabel; procedure InitializeWizard(); begin ExtractTemporaryFile('img2.bmp'); WizardForm.WizardBitmapImage.Width:= ScaleX(497); WizardForm.WizardBitmapImage2.Width:= ScaleX(497); WizardForm.WizardBitmapImage2.Bitmap.LoadFromFile(ExpandConstant('{tmp}\img2.bmp')); WelcomeLabel1:= TLabel.Create(WizardForm); WelcomeLabel1.AutoSize:= False; with WizardForm.WelcomeLabel1 do WelcomeLabel1.SetBounds(Left, Top, Width, Height); WelcomeLabel1.Font:= WizardForm.WelcomeLabel1.Font WelcomeLabel1.Font.Color:= clyellow; WelcomeLabel1.Transparent:= True; WelcomeLabel1.WordWrap:= true; WelcomeLabel1.Caption:= WizardForm.WelcomeLabel1.Caption; WelcomeLabel1.Parent:= WizardForm.WelcomePage WelcomeLabel2:= TLabel.Create(WizardForm); WelcomeLabel2.AutoSize:= False; with WizardForm.WelcomeLabel2 do WelcomeLabel2.SetBounds(Left, Top, Width, Height); WelcomeLabel2.Font:= WizardForm.WelcomeLabel2.Font WelcomeLabel2.Font.Color:= clblue; WelcomeLabel2.Transparent:= True; WelcomeLabel2.WordWrap:= true; WelcomeLabel2.Caption:= WizardForm.WelcomeLabel2.Caption; WelcomeLabel2.Parent:= WizardForm.WelcomePage FinishedHeadingLabel:= TLabel.Create(WizardForm); FinishedHeadingLabel.AutoSize:= False; with WizardForm.FinishedHeadingLabel do FinishedHeadingLabel.SetBounds(Left, Top, Width, Height); FinishedHeadingLabel.Font:= WizardForm.FinishedHeadingLabel.Font FinishedHeadingLabel.Font.Color:= clRed; FinishedHeadingLabel.Transparent:= True; FinishedHeadingLabel.WordWrap:= true; FinishedHeadingLabel.Caption:= WizardForm.FinishedHeadingLabel.Caption; FinishedHeadingLabel.Parent:= WizardForm.FinishedPage FinishedLabel:= TLabel.Create(WizardForm); FinishedLabel.AutoSize:= False; with WizardForm.FinishedLabel do FinishedLabel.SetBounds(Left, Top, Width, Height); FinishedLabel.Font:= WizardForm.FinishedLabel.Font FinishedLabel.Font.Color:= clyellow; FinishedLabel.Transparent:= True; FinishedLabel.WordWrap:= true; FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; FinishedLabel.Parent:= WizardForm.FinishedPage WizardForm.WelcomeLabel1.Hide; WizardForm.WelcomeLabel2.Hide; WizardForm.FinishedLabel.Hide; WizardForm.FinishedHeadingLabel.Hide; WizardForm.Position:=poScreenCenter; end; procedure CurPageChanged(CurPageID: Integer); begin FinishedLabel.Caption:= WizardForm.FinishedLabel.Caption; end; insombia будь добр дай код для music button.png а то мой не работает const BASS_ACTIVE_PLAYING = 1; BASS_ACTIVE_STALLED = 2; BASS_ACTIVE_PAUSED = 3; BASS_SAMPLE_LOOP = 4; var MusicButton1,MusicButton2,mp3Handle: HWND; mp3Name: String; function sndPlaySound(lpszSoundName: String; uFlags: cardinal):integer; external 'sndPlaySound{#A}@winmm.dll stdcall'; 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: PChar; offset: DWORD; length: DWORD; flags: DWORD): DWORD; 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_ChannelIsActive(handle: DWORD): Integer; external 'BASS_ChannelIsActive@files:BASS.dll stdcall delayload'; function BASS_ChannelPause(handle: DWORD): Boolean; external 'BASS_ChannelPause@files:BASS.dll stdcall delayload'; function BASS_Pause(): Boolean; external 'BASS_Pause@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'; function InitializeSetup:boolean; begin if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll'); if not FileExists(ExpandConstant('{tmp}\CallbackCtrl.dll')) then ExtractTemporaryFile('CallbackCtrl.dll'); Result:=True; end; procedure WFBtnEnter(hBtn:HWND); begin sndPlaySound(ExpandConstant('{tmp}\WFEnter.wav'), $0001); end; procedure MusicButtonClick(hBtn:HWND); begin sndPlaySound(ExpandConstant('{tmp}\Click.wav'), $0001); if BtnGetChecked(hBtn) then begin BASS_ChannelPause(mp3Handle); end else case BASS_ChannelIsActive(mp3Handle) of BASS_ACTIVE_PAUSED: begin BASS_ChannelPlay(mp3Handle, False); end; end; btnSetChecked(MusicButton1, BtnGetChecked(hBtn)) btnSetChecked(MusicButton2, BtnGetChecked(hBtn)) end; procedure InsertMusic; begin ExtractTemporaryFile('MusicButton.png'); ExtractTemporaryFile('BASS.dll'); ExtractTemporaryFile('Music.mp3'); ExtractTemporaryFile('Click.wav'); ExtractTemporaryFile('Check.wav'); ExtractTemporaryFile('WFEnter.wav'); MusicButton1:=BtnCreate(WizardForm.WelcomePage.Handle,ScaleX(20),ScaleY(20),ScaleX(25),ScaleY(23),Ex pandConstant('{tmp}\MusicButton.png'),0,True); BtnSetEvent(MusicButton1,BtnClickEventID,WrapBtnCallback(@MusicButtonClick,1)); BtnSetEvent(MusicButton1,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1)); BtnSetVisibility(MusicButton1,True); BtnSetCursor(MusicButton1,GetSysCursorHandle(32649)); ImgApplyChanges(WizardForm.WelcomePage.Handle); MusicButton2:=BtnCreate(WizardForm.SelectDirPage.Handle,ScaleX(20),ScaleY(20),ScaleX(25),ScaleY(23), ExpandConstant('{tmp}\MusicButton.png'),0,True); BtnSetEvent(MusicButton2,BtnClickEventID,WrapBtnCallback(@MusicButtonClick,1)); BtnSetEvent(MusicButton2,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1)); BtnSetVisibility(MusicButton2,True); BtnSetCursor(MusicButton2,GetSysCursorHandle(32649)); ImgApplyChanges(WizardForm.SelectDirPage.Handle); mp3Name := ExpandConstant('{tmp}\Music.mp3'); BASS_Init(-1, 44100, 0, 0, 0); mp3Handle := BASS_StreamCreateFile(FALSE, PChar(mp3Name), 0, 0, BASS_SAMPLE_LOOP); BASS_Start(); BASS_ChannelPlay(mp3Handle, False); end; //************************************************ [Конец - Музыка] ***************************************************// procedure InitializeWizard; begin InsertMusic; end; procedure CurPageChanged(CurPageID: Integer); begin ImgApplyChanges(WizardForm.Handle); end; procedure DeinitializeSetup(); begin BASS_Stop(); BASS_Free(); gdipShutdown; end; |
|||
Отправлено: 18:57, 02-09-2011 | #2978 |
Старожил Сообщения: 189
|
Профиль | Отправить PM | Цитировать Mafia_forever, ты мемуары свои под спойлер спряч!
|
------- Отправлено: 02:52, 03-09-2011 | #2979 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Как сделать чтоб приветстие было в таком тёмном окне?
![]() ![]() |
Отправлено: 08:16, 03-09-2011 | #2980 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Утилиты - [addon] Inno Setup | CrOsP | Наборы обновлений для Windows XP/2003/Windows 7 | 33 | 11-05-2011 16:03 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Inno Setup 5.3.6 | OSZone Software | Новости программного обеспечения | 0 | 15-11-2009 17:30 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|