![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Dodakaedr, теперь пишет ошибку function NextButtonClick(CurPageID: Integer): Boolean; Вот полный код
Скрытый текст
[Components]
Name: "zvuk"; Description: "Звуки(перед установкой скопируйте папку audio в res_mods\XX.XX.XX\)" Name: "zvuk\audio"; Description: "Звонок крита"; Name: "zvuk\zasvet"; Description: "Озвучка лампочки"; [Files] ; zvuk Files Source: "{app}\res\audio\*"; DestDir: "{app}\res_mods\0.9.4\audio\"; Flags: external recursesubdirs skipifsourcedoesntexist; [Dirs] ; for Test Name: "{app}\res_mods\0.8.5\audio" Name: "{app}\res_mods\0.8.6\audio" ; DUMMY: Name: "{app}\res_mods\0.8.7" Name: "{app}\res_mods\hl2" Name: "{app}\res_mods\Valve" [code] var InstallPath: String; function GetInstallPath(const Dummy: String): String; begin if ForceDirectories(InstallPath) then Result := RemoveBackslash(InstallPath); end; function CheckInstallPath(): Boolean; begin Result := InstallPath <> ''; end; /////////////////////////// function SearchForFolders(const RootFolder: String): array of String; // получить имена всех папок в папке (без рекурсии) var NewSearchPath: String; FindRec: TFindRec; Len: Integer; begin NewSearchPath := AddBackslash(RemoveBackslash(RootFolder)); if FindFirst(NewSearchPath + '*.*', FindRec) then try repeat if (FindRec.Name <> '.') and (FindRec.Name <> '..') then if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY then begin Len := GetArrayLength(Result); SetArrayLength(Result, Len+1); Result[Len] := NewSearchPath + FindRec.Name; end; until not FindNext(FindRec); finally FindClose(FindRec); end; end; function OnlyVersion(const iStr: String): String; /// оставлять только цифры var i: Integer; begin Result := ''; if Length(iStr) > 0 then for i := 1 to Length(iStr) do case iStr[i] of '.', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': Result := Result + iStr[i]; end; end; function OnlyWithFolder(const FolderName: String ;const Path: array of String): array of String; // оставлять только пути с именем искомой папки var i, Len: Integer; begin for i := 0 to GetArrayLength(Path)-1 do if DirExists(AddBackslash(RemoveBackslash(Path[i])) + FolderName) then begin Len := GetArrayLength(Result); SetArrayLength(Result, Len+1); Result[Len] := Path[i]; end; end; function OnlyVersionFolders(const Path: array of String): array of String; // оставлять папки только с цифрами, var i, Len: Integer; begin for i := 0 to GetArrayLength(Path)-1 do if Length( OnlyVersion(ExtractFileName(Path[i])) ) = 5 then begin Len := GetArrayLength(Result); SetArrayLength(Result, Len+1); Result[Len] := Path[i]; end; end; function GetNormalTextLen(const Text: String): Integer; begin with TLabel.Create(nil) do try Caption := Text; Result := Width; finally Free; end; end; function AskForPath(const Path: array of String): String; var AskForm: TForm; PathCombo: TNewComboBox; Len, i: Integer; begin Len := GetArrayLength(Path); if Len = 0 then Exit; AskForm := TForm.Create(nil); with AskForm do begin Caption := 'Какую папку патчить?'; Position := poScreenCenter; PathCombo := TNewComboBox.Create(AskForm); with PathCombo do begin Parent := AskForm; SetBounds(ScaleX(7), ScaleY(7), ScaleX(GetNormalTextLen(Path[0]) + 25), ScaleY(23)); Style := csDropDownList; for i := 0 to Len-1 do Items.Add(Path[i]); ItemIndex := 0; end; ClientWidth := ScaleX(PathCombo.Width + 16); ClientHeight := ScaleY(77); with TButton.Create(AskForm) do begin Parent := AskForm; Left := ScaleX(7); Top := ScaleY(PathCombo.Top + PathCombo.Height + 16); Caption := SetupMessage(msgButtonOK); ModalResult := mrOk; end; with TButton.Create(AskForm) do begin Parent := AskForm; Left := ScaleX(90); Top := ScaleY(PathCombo.Top + PathCombo.Height + 16); Caption := SetupMessage(msgButtonCancel); ModalResult := mrCancel; end; if ShowModal = mrOk then Result := PathCombo.Text; end; end; function NextButtonClick(CurPageID: Integer): Boolean; var UnefInstallPath: String; begin if CurPageID = wpSelectComponents then begin if IsComponentSelected('zvuk') then begin UnefInstallPath := AskForPath( OnlyWithFolder('audio', OnlyVersionFolders( SearchForFolders( AddBackslash(RemoveBackslash( WizardDirValue() )) + 'res_mods') ) ) ); Result := UnefInstallPath <> ''; if not Result then MsgBox('No', mbError, MB_OK) else InstallPath := UnefInstallPath; end else Result := True; end else Result := True; end; |
Отправлено: 20:18, 25-11-2014 | #2031 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Larkod:
|
|
------- Отправлено: 20:23, 25-11-2014 | #2032 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Dodakaedr, вот мой полный скрипт script.rar
|
Отправлено: 20:31, 25-11-2014 | #2033 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Вот вся папка со скриптом https://drive.google.com/file/d/0B7Y...VnM/view?pli=1
|
Отправлено: 20:54, 25-11-2014 | #2034 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Larkod,
![]() |
------- Отправлено: 21:01, 25-11-2014 | #2035 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Dodakaedr, я просто новичок, а справку я читал. Мне ориентироваться легче просто это пока черновик идет. А если я распихаю все по порядку, то мне тяжелее будет ошибки искать. Спасибо большое
![]() |
Отправлено: 21:03, 25-11-2014 | #2036 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось Dodakaedr, 25-11-2014 в 21:23. Отправлено: 21:06, 25-11-2014 | #2037 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Dodakaedr , вопрос еще 1 сейчас поменял картинку в установщике с помощью "Редактора форм" теперь указывает на ошибку "procedure RedesignWizardForm;"
Скрытый текст
procedure RedesignWizardForm;
var i: integer; BtnPanel: TPanel; BtnImage: TBitmapImage; begin ExtractTemporaryFile('logo.bmp') BtnPanel:=TPanel.Create(WizardForm) with BtnPanel do begin Left:=0 Top:=315 Width:=179 Height:=46 Cursor:=crHand OnClick:=@logoOnClick Parent:=WizardForm end; BtnImage:=TBitmapImage.Create(WizardForm) with BtnImage do begin AutoSize:=True; Enabled:=False; Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\logo.bmp') Parent:=BtnPanel end; with WizardForm do begin end; |
Отправлено: 21:13, 25-11-2014 | #2038 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Larkod:
|
|
------- Отправлено: 21:19, 25-11-2014 | #2039 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Уважаемый Dodakaedr, не подскажите для чайника более подробно, что надо сделать
![]() Спасибо уже не надо чайник сам разобрался ![]() |
Отправлено: 21:26, 25-11-2014 | #2040 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|