![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Скрипты Inno Setup. Помощь и советы [часть 7]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] |
|
Отправлено: 11:48, 10-03-2014 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Цитата sergey3695:
|
|
Последний раз редактировалось ShadeUa, 28-01-2015 в 16:20. Отправлено: 23:57, 18-01-2015 | #2341 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 148
|
Профиль | Отправить PM | Цитировать ShadeUa, botva2.iss подключи.
|
Отправлено: 11:20, 19-01-2015 | #2342 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Цитата sergey3695:
#define MyAppName "Test" #define MyAppVerName "Test" #define MyDefaultDirName "Test" #define MyDefaultGroupName "Test" [Setup] SourceDir=. OutputDir=Setup AppName={#MyAppName} AppVerName={#MyAppVerName} DefaultDirName={pf}\{#MyDefaultDirName} DefaultGroupName={#MyDefaultGroupName} OutputBaseFilename=Setup AllowNoIcons=true ShowTasksTreeLines=true [files] Source: 1.png; DestDir: {tmp}; Flags: dontcopy Source: botva2.dll; DestDir: {tmp}; Flags: dontcopy Source: botva2.iss; DestDir: {tmp}; Flags: dontcopy [code] (*var CreateFormFromImage : *) #include "botva2.iss" function InitializeSetup:boolean; begin if not FileExists(ExpandConstant('{tmp}\botva2.dll')) then ExtractTemporaryFile('botva2.dll'); if not FileExists(ExpandConstant('{tmp}\1.png')) then ExtractTemporaryFile('1.png'); Result:=True; end; #ifdef UNICODE #define A "W" #else #define A "A" #endif const GWL_WNDPROC = -4; WM_NCLBUTTONDOWN = $00A1; type LPARAM = Integer; WPARAM = Integer; LRESULT = Integer; TFNWndProc = Integer; var OldWindowProc: Longint; function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall'; function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall'; function WindowProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; begin case Msg of WM_NCLBUTTONDOWN: begin Msg := 0; WizardForm.Close; end; end; Result := CallWindowProc(OldWindowProc, hWnd, Msg, wParam, lParam); end; procedure CloseForm(Sender: TObject); begin WizardForm.Close; end; procedure InitializeWizard; begin CreateFormFromImage(wizardform.Handle,ExpandConstant('{tmp}\1.png')); ImgApplyChanges(WizardForm.Handle); OldWindowProc := SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('WindowProc')); end; procedure DeinitializeSetup(); begin SetWindowlong(WizardForm.Handle, GWL_WNDPROC, OldWindowProc); gdipShutdown; end; |
|
Отправлено: 11:49, 19-01-2015 | #2343 |
Пользователь Сообщения: 148
|
Профиль | Отправить PM | Цитировать Цитата ShadeUa:
|
|
Отправлено: 14:40, 19-01-2015 | #2344 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Подскажите пож. в чём может бать проблема:
В код инсталятора на SelectDirPage прописана кастомная кнопка "Обзор", работает отлично но если ошибочно выбрать путь установки DVD ROM и далее повторно нажать на "Обзор" всплывает сообщение "Вставьте диск в устройство "DVD RW" которого при стандартной кнопке нет. Как отключить это сообщение? |
Отправлено: 22:45, 19-01-2015 | #2345 |
Пользователь Сообщения: 148
|
Профиль | Отправить PM | Цитировать ROMKA-1977, так и должно быть. при стандартной также.
|
Отправлено: 23:03, 19-01-2015 | #2346 |
Ветеран Сообщения: 517
|
Профиль | Отправить PM | Цитировать Цитата ROMKA-1977:
Скрытый текст
#define Name "Test" [Setup] SourceDir=. OutputDir=Setup AppName=Test AppVerName=Test DefaultDirName={pf}\Test DefaultGroupName=Test OutputBaseFilename=Setup AllowNoIcons=true [Languages] Name: russian; MessagesFile: compiler:Languages\Russian.isl [Files] Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs; [Icons] Name: {group}\MyProg; Filename: {app}; WorkingDir: {app} [CustomMessages] russian.RestoreButton=Сброс [Code] ///////////////////////////////////////////////////////// #define A = (Defined UNICODE) ? "W" : "A" ///////////////////////////////////////////////////////// const DRIVE_CDROM = 5; ///////////////////////////////////////////////////////// function GetDriveType( lpRootPathName: String ): UINT; external 'GetDriveType{#A}@kernel32.dll stdcall'; ///////////////////////////////////////////////////////// var BrowseForm: TSetupForm; BrowseForm2: TSetupForm; DirTreeView: TFolderTreeView; DirFolderTreeView: TStartMenuFolderTreeView; EditTreeView: TNewEdit; EditFolderTreeView: TNewEdit; DB_Button: TNewButton; GB_Button: TNewButton; OldEvent_NoIconsCheckClick: TNotifyEvent; procedure DirTreeViewChange(Sender: TObject); begin if DirTreeView.Directory <> WizardForm.DirEdit.Text then EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}' else EditTreeView.Text := DirTreeView.Directory; end; procedure DirFolderTreeViewChange(Sender: TObject); begin if DirFolderTreeView.Directory <> WizardForm.GroupEdit.Text then EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}' else EditFolderTreeView.Text := DirFolderTreeView.Directory; end; procedure BrowseFormButtonsTreeViewOnClick(Sender: TObject); begin case TButton(Sender).Tag of 1: EditTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#SetupSetting("DefaultDirName")}')); 2: begin DirTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName)); EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}'; end; 3: if EditTreeView.Text <> WizardForm.DirEdit.Text then ///////////////////////////////////////////////////////////////// if GetDriveType( AddBackslash( ExtractFileDrive( EditTreeView.Text ) ) ) <> DRIVE_CDROM then ///////////////////////////////////////////////////////////////// WizardForm.DirEdit.Text := EditTreeView.Text; end; end; procedure BrowseFormButtonsFolderTreeViewOnClick(Sender: TObject); begin case TButton(Sender).Tag of 4: EditFolderTreeView.Text := RemoveBackslashUnlessRoot(ExpandConstant('{#Name}')); 5: begin DirFolderTreeView.CreateNewDirectory(SetupMessage(msgNewFolderName)); EditFolderTreeView.Text := AddBackslash(DirFolderTreeView.Directory) + '{#Name}'; end; 6: if EditFolderTreeView.Text <> WizardForm.GroupEdit.Text then WizardForm.GroupEdit.Text := EditFolderTreeView.Text; end; end; procedure BrowseDirTreeViewClick(Sender: TObject); begin BrowseForm := CreateCustomForm(); with BrowseForm do begin Width := ScaleX(413); Height := ScaleY(361); Caption := SetupMessage(msgBrowseDialogTitle); Position := poScreenCenter; with TLabel.Create(nil) do begin SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16)); Caption := SetupMessage(msgBrowseDialogLabel); Parent := BrowseForm; Font.Size := 8; end; DirTreeView := TFolderTreeView.Create(nil) with DirTreeView do begin SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225)); OnChange := @DirTreeViewChange; Parent := BrowseForm; end; EditTreeView := TNewEdit.Create(nil); with EditTreeView do begin SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21)); Text := DirTreeView.Directory; Parent := BrowseForm; Font.Color := clWindowText; end; with TButton.Create(nil) do begin SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonCancel); ModalResult := mrCancel; end; with TButton.Create(nil) do begin SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := ExpandConstant('{cm:RestoreButton}'); Tag := 1; OnClick := @BrowseFormButtonsTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonNewFolder); Tag := 2; OnClick := @BrowseFormButtonsTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm; Caption := SetupMessage(msgButtonOK); Tag := 3; OnClick := @BrowseFormButtonsTreeViewOnClick; ModalResult := mrOk; end; DirTreeView.ChangeDirectory(AddBackslash(WizardForm.DirEdit.Text), True); ShowModal; Free; end; end; procedure BrowseDirFolderTreeViewClick(Sender: TObject); begin BrowseForm2 := CreateCustomForm(); with BrowseForm2 do begin Width := ScaleX(413); Height := ScaleY(361); Caption := SetupMessage(msgBrowseDialogTitle); Position := poScreenCenter; with TLabel.Create(nil) do begin SetBounds(ScaleX(12), ScaleY(12), ScaleX(207), ScaleY(16)); Caption := SetupMessage(msgBrowseDialogLabel); Parent := BrowseForm2; Font.Size := 8; end; DirFolderTreeView := TStartMenuFolderTreeView.Create(nil) with DirFolderTreeView do begin SetBounds(ScaleX(16), ScaleY(64), ScaleX(375), ScaleY(225)); SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}')); OnChange := @DirFolderTreeViewChange; Parent := BrowseForm2; end; EditFolderTreeView := TNewEdit.Create(nil); with EditFolderTreeView do begin SetBounds(ScaleX(16), ScaleY(36), ScaleX(376), ScaleY(21)); Text := DirFolderTreeView.Directory; Parent := BrowseForm2; Font.Color := clWindowText; end; with TButton.Create(nil) do begin SetBounds(ScaleX(16), ScaleY(301), ScaleX(90), ScaleX(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonCancel); ModalResult := mrCancel; end; with TButton.Create(nil) do begin SetBounds(ScaleX(111), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := ExpandConstant('{cm:RestoreButton}'); Tag := 4; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(206), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonNewFolder); Tag := 5; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; end; with TButton.Create(nil) do begin SetBounds(ScaleX(301), ScaleY(301), ScaleX(90), ScaleY(23)); Parent := BrowseForm2; Caption := SetupMessage(msgButtonOK); Tag := 6; OnClick := @BrowseFormButtonsFolderTreeViewOnClick; ModalResult := mrOk; end; DirFolderTreeView.ChangeDirectory(AddBackslash(WizardForm.GroupEdit.Text), True); ShowModal; Free; end; end; procedure NoIconsCheckClick(Sender: TObject); begin OldEvent_NoIconsCheckClick(Sender); GB_Button.Enabled := not WizardForm.NoIconsCheck.Checked; end; procedure InitializeWizard(); begin OldEvent_NoIconsCheckClick := WizardForm.NoIconsCheck.OnClick; WizardForm.NoIconsCheck.OnClick := @NoIconsCheckClick; WizardForm.DirBrowseButton.Hide; DB_Button := TNewButton.create(WizardForm); with DB_Button do begin Parent := WizardForm.SelectDirPage; SetBounds(WizardForm.DirBrowseButton.Left, WizardForm.DirBrowseButton.Top, WizardForm.DirBrowseButton.Width, WizardForm.DirBrowseButton.Height - ScaleY(1)); Caption := SetupMessage(msgButtonBrowse); OnClick := @BrowseDirTreeViewClick; end; WizardForm.GroupBrowseButton.Hide; GB_Button := TNewButton.create(WizardForm); with GB_Button do begin Parent := WizardForm.SelectProgramGroupPage; SetBounds(WizardForm.GroupBrowseButton.Left, WizardForm.GroupBrowseButton.Top, WizardForm.GroupBrowseButton.Width, WizardForm.GroupBrowseButton.Height - ScaleY(1)); Caption := SetupMessage(msgButtonBrowse); OnClick := @BrowseDirFolderTreeViewClick; end; end; Тем же способом можете выводить сообщение, если выбран CD-ROM, типа "установка на выбранный диск невозможна" и т.д. |
|
Последний раз редактировалось saurn, 19-01-2015 в 23:22. Отправлено: 23:16, 19-01-2015 | #2347 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Цитата saurn:
|
|
Отправлено: 23:29, 19-01-2015 | #2348 |
Ветеран Сообщения: 517
|
Профиль | Отправить PM | Цитировать Цитата ROMKA-1977:
|
|
Отправлено: 23:37, 19-01-2015 | #2349 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать ROMKA-1977, можешь ещё, как вариант, при выборе CD-ROM'а сделать неактивной нужную кнопку.
Вариант с nextbutton |
------- Отправлено: 11:00, 20-01-2015 | #2350 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 |
|