![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
Пользователь Сообщения: 148
|
Профиль | Отправить PM | Цитировать ROMKA-1977, при неправильном пути DirTreeView ничего не отображает. (в основе пример saurn,).
Скрытый текст
#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; DEdit: boolean; procedure DirTreeViewChange(Sender: TObject); begin if DEdit then begin if DirTreeView.Directory <> WizardForm.DirEdit.Text then EditTreeView.Text := AddBackslash(DirTreeView.Directory) + '{#Name}' else EditTreeView.Text := DirTreeView.Directory; end; 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 BrowseA(Sender: TObject); begin DEdit:= True; end; procedure BrowseC(Sender: TObject; var action: TCloseAction); begin DEdit:= False; end; procedure BrowseDirTreeViewClick(Sender: TObject); begin BrowseForm := CreateCustomForm(); with BrowseForm do begin Width := ScaleX(413); Height := ScaleY(361); Caption := SetupMessage(msgBrowseDialogTitle); Position := poScreenCenter; OnActivate:= @BrowseA; OnClose:= @BrowseC; 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 := WizardForm.DirEdit.Text; 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; if GetDriveType( AddBackslash( ExtractFileDrive( WizardForm.DirEdit.Text ) ) ) <> DRIVE_CDROM then 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; |
Отправлено: 11:47, 20-01-2015 | #2351 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата ROMKA-1977:
Цитата nik1967:
Скрытый текст
[Setup] AppName=test AppVerName=test DefaultDirName={tmp} CreateAppDir=no Uninstallable=no CreateUninstallRegKey=no [Languages] Name: ru; MessagesFile: compiler:Languages\russian.isl [code] #define A = (Defined UNICODE) ? "W" : "A" const COINIT_APARTMENTTHREADED = $2; MAX_PATH = 260; BIF_RETURNONLYFSDIRS = $1; BIF_DONTGOBELOWDOMAIN = $2; BIF_NEWDIALOGSTYLE = $40; BIF_UAHINT = $0100; BFFM_INITIALIZED = $1; BFFM_SELCHANGED = $2; WM_USER = $0400; BFFM_ENABLEOK = (WM_USER + 101); BFFM_SETSELECTION = (WM_USER + 102); DRIVE_REMOVABLE = 2; DRIVE_FIXED = 3; DRIVE_RAMDISK = 6; type BROWSEINFO = record hwndOwner: HWND; pidlRoot: Longint; pszDisplayName: String; lpszTitle: String; ulFlags: UINT; lpfn: Longint; lParam: Longint; iImage: Integer; end; function CoInitializeEx(pvReserved: Longint; dwCoInit: DWORD): Longint; external 'CoInitializeEx@ole32.dll stdcall'; procedure CoUninitialize; external 'CoUninitialize@ole32.dll stdcall'; function SHBrowseForFolder(lpbi: BROWSEINFO): Longint; external 'SHBrowseForFolder{#A}@shell32.dll stdcall'; function SHGetPathFromIDList(pidl: Longint; pszPath: String): BOOL; external 'SHGetPathFromIDList{#A}@shell32.dll stdcall'; function GetDriveType(lpRootPathName: String): UINT; external 'GetDriveType{#A}@kernel32.dll stdcall'; var AButton: TButton; AEdit: TEdit; ////////////////////////////////////////////////////////////////////////////////////// function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam, lpData: Longint): Integer; var szDrive: String; begin case uMsg of BFFM_INITIALIZED: SendMessage(hwnd, BFFM_SETSELECTION, 1, lpData); BFFM_SELCHANGED: begin SendMessage(hwnd, BFFM_ENABLEOK, 0, 0); szDrive := StringOfChar(#0, MAX_PATH); if SHGetPathFromIDList(lParam, szDrive) then begin szDrive := AddBackslash(ExtractFileDrive(Trim(szDrive))); case GetDriveType(szDrive) of DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_RAMDISK: SendMessage(hwnd, BFFM_ENABLEOK, 0, 1); end; end; end; end; Result := 0; end; ////////////////////////////////////////// procedure AButtonOnClick(Sender: TObject); var bi: BROWSEINFO; szSel: AnsiString; pidl: Longint; begin { fill BROWSEINFO struct } bi.pszDisplayName := StringOfChar(#0, MAX_PATH); bi.lpszTitle := SetupMessage(msgBrowseDialogLabel); bi.ulFlags := BIF_RETURNONLYFSDIRS or BIF_DONTGOBELOWDOMAIN or BIF_NEWDIALOGSTYLE or BIF_UAHINT; szSel := AEdit.Text; if (szSel <> '') then #ifdef UNICODE bi.lParam := CastAnsiStringToInteger(szSel); #else bi.lParam := CastStringToInteger(szSel); #endif bi.lpfn := CallbackAddr('BrowseCallbackProc'); { browse } try if CoInitializeEx(0, COINIT_APARTMENTTHREADED) = 0 then Exit; pidl := SHBrowseForFolder(bi); if (pidl <> 0) then begin if SHGetPathFromIDList(pidl, bi.pszDisplayName) then AEdit.Text := Trim(bi.pszDisplayName); end; finally CoUninitialize; end; end; /////////////////////////// procedure InitializeWizard; begin WizardForm.OuterNotebook.Hide; { AButton } AButton := TButton.Create(WizardForm); with AButton do begin Parent := WizardForm; Left := Parent.ClientWidth - Width; Caption := SetupMessage(msgButtonWizardBrowse); OnClick := @AButtonOnClick; end; { AEdit } AEdit := TEdit.Create(WizardForm); with AEdit do begin Parent := WizardForm; Top := Top + (AButton.Height - Height) div 2; Width := AButton.Left; end; end; |
||
Отправлено: 13:46, 20-01-2015 | #2352 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Цитата saurn:
|
|
Отправлено: 15:06, 20-01-2015 | #2353 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать ROMKA-1977,
|
------- Отправлено: 16:47, 20-01-2015 | #2354 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Подскажите:
в выше описанный мною код по вашим совтам прописол код сообщения "установка на выбранный диск невозможна" с блокировкой кнопки "Далее". Получилось так: Проблема: если ошибочно выбрать путь установки DVD ROM и нажать на кнопку "OK" всплывает окно с сообщением "установка на выбранный диск невозможна" после закрытия которого окно выбора директории закрывается. Возможно ли сделать так чтобы после закрытия окна с сообщением окно выбора директории не закрывалось. |
Отправлено: 13:09, 21-01-2015 | #2355 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Здраствуйте , в чем может быть проблема?
http://forum.oszone.net/attachment.p...1&d=1421926584 |
Отправлено: 14:36, 22-01-2015 | #2356 |
Старожил Сообщения: 212
|
Профиль | Отправить PM | Цитировать Цитата Юрій_Окропірідзе@vk:
|
|
------- Отправлено: 14:52, 22-01-2015 | #2357 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kotyarko@fb:
|
|
Отправлено: 15:50, 22-01-2015 | #2358 |
Старожил Сообщения: 212
|
Профиль | Отправить PM | Цитировать Цитата Юрій_Окропірідзе@vk:
|
|
------- Отправлено: 16:17, 22-01-2015 | #2359 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kotyarko@fb:
BtnSetEvent(INFBtn,BtnMouseEnterEventID,WrapBtnCallback(@WFBtnEnter,1)); BtnSetCursor(INFBtn,GetSysCursorHandle(32649)); ето вот ета форма? |
|
Отправлено: 18:12, 22-01-2015 | #2360 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|