![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать TListBox.Create(WizardForm.SelectDirPage)
Parent:=WizardForm.SelectDirPage дальше сам делай |
Отправлено: 23:46, 24-11-2014 | #2021 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать народ есть ли библиотека ISSkin.dll для win 8.1?,а то найти не могу
|
Отправлено: 00:11, 25-11-2014 | #2022 |
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата Larkod:
Скрытый текст
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1] "Inno Setup: Setup Version"="5.4.2 (u)" "Inno Setup: App Path"="C:\\Games\\World_of_Tanks" "InstallLocation"="C:\\Games\\World_of_Tanks\\" "Inno Setup: Icon Group"="World of Tanks" "Inno Setup: User"="-" "Inno Setup: Selected Tasks"="desktopicon" "Inno Setup: Deselected Tasks"="" "Inno Setup: Language"="ru" "DisplayName"="World of Tanks" "DisplayIcon"="C:\\Games\\World_of_Tanks\\WoTLauncher.exe" "UninstallString"="\"C:\\Games\\World_of_Tanks\\unins000.exe\"" "QuietUninstallString"="\"C:\\Games\\World_of_Tanks\\unins000.exe\" /SILENT" "Publisher"="Wargaming.net" "URLInfoAbout"="http://wargaming.net" "HelpLink"="https://support.worldoftanks.ru" "NoModify"=dword:00000001 "NoRepair"=dword:00000001 "InstallDate"="-" Цитата ekspoint:
Цитата diman_21Ru:
Пример
[Code] var CheckBox1: Boolean; CheckBox2: TNewCheckBox; S: String; procedure CheckBox1Click(Sender: TObject); begin CheckBox1:=CheckBox2.Checked; end; procedure InitializeWizard(); begin CheckBox2 := TNewCheckBox.Create(WizardForm); with CheckBox2 do begin Parent := WizardForm.SelectDirPage; Left := ScaleX(0); Top := ScaleY(105); Width := ScaleX(500); Height := ScaleY(17); Caption := ExpandConstant('Удалить папку "Backup" из "{userdocs}"'); OnClick := @CheckBox1Click; TabOrder := 0; Checked := False; end; end; procedure CurPageChanged(CurPageID: Integer); begin If CurPageID=wpInstalling then begin If CheckBox1 then S:=ExpandConstant('{userdocs}')+'\Backup'; If DirExists(S) then begin DelTree(ExpandConstant('{userdocs}')+'\Backup', True, True, True); end; end; end; Цитата ekspoint:
|
||||
Отправлено: 06:31, 25-11-2014 | #2023 |
Пользователь Сообщения: 110
|
Профиль | Отправить PM | Цитировать Добрый день форумчане
![]() Назрел вопрос, хочу добавить выборку на страницу компонентов (секция [Types]), изначально она там есть (даже без секции [Types]), но в ней стандартные тексты (Компактная, полная и выборочная). Я же хочу добавить другие пункты (Стандартная конфигурация, наш выбор либо что-то в этом роде). Чтобы их добавить нужно прописать секцию [Types], но когда я ее включаю, то полоска выборки пропадает. И вот собственно в чем вопрос... Есть ли другие способы как подключить полоску выборки? Возможно она не появляется из-за того, что я использую скин? Правильно ли я делал? |
Отправлено: 14:31, 25-11-2014 | #2024 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Farser21, Что-то типа этого?
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program OutputDir=. [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Types] Name: standart; Description: "Стандартная конфигурация"; Flags: iscustom Name: recommended; Description: "Наш выбор"; Name: nocolor; Description: "Режим цветовой слепоты"; [Components] Name: "main"; Description: "Main Files"; Types: standart; Name: "help"; Description: "Help Files"; Types: recommended; Name: "help2"; Description: "Dutch"; Types: nocolor |
------- Отправлено: 17:42, 25-11-2014 | #2025 |
Пользователь Сообщения: 110
|
Профиль | Отправить PM | Цитировать Dodakaedr, благодарю, все работает
![]() |
Отправлено: 18:00, 25-11-2014 | #2026 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Всем привет. Подскажите пожалуйста вчера задавал этот вопрос по поводу копирования папки audio из World of Tnaks. Пример из World of Tnaks\res\audio в папку World of Tnaks\res_mods\0.9.4\audio
Для данного вопроса использовал кода Скрытый текст
[Setup]
InfoBeforeFile=compiler:Default.isl [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; Но он при запуске выдает код на прочтение типа похожее на ознакомление с лицензией |
Отправлено: 19:12, 25-11-2014 | #2027 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Larkod:
|
|
------- Отправлено: 19:18, 25-11-2014 | #2028 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Dodakaedr , спасибо помогло. Еще одна просьба есть. помогите 2 кода совместить, а то ошибку выдает
Скрытый текст
Procedure InitializeWizard();
var Primer: TLabel; begin Primer := TLabel.Create(WizardForm); Primer.Parent := WizardForm.SelectDirPage; Primer.SetBounds(WizardForm.DirEdit.Top - 80, 110, WizardForm.Width, 110); Primer.Caption := 'Если не нашел путь к World of Tanks, то укажите так f:\Games\World of Tanks\'; Primer.WordWrap := False; end; Скрытый текст
procedure InitializeWizard();
begin RedesignWizardForm; RedesignWizardForm; InitInfo(); RedesignWizardForm; end; function IsAppRunning(): Boolean; begin Result:=(FindWindowByWindowName('WoT Client') <> 0); end; function NextButtonClick(CurPage: Integer): Boolean; begin Result:=True; If CurPage=1 then begin if IsAppRunning() then begin MsgBox('Клиент игры World of Tanks в настоящее время запущен.' #13#13 'Необходимо закрыть его перед продолжением установки.', mbError, MB_OK); Result:=False; end else Result:=True; end; end; |
Отправлено: 20:01, 25-11-2014 | #2029 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Larkod:
Скрытый текст
procedure InitializeWizard(); var Primer: TLabel; begin RedesignWizardForm; InitInfo(); Primer := TLabel.Create(WizardForm); Primer.Parent := WizardForm.SelectDirPage; Primer.SetBounds(WizardForm.DirEdit.Top - 80, 110, WizardForm.Width, 110); Primer.Caption := 'Если не нашел путь к World of Tanks, то укажите так f:\Games\World of Tanks\'; Primer.WordWrap := False; end; function IsAppRunning(): Boolean; begin Result:=(FindWindowByWindowName('WoT Client') <> 0); end; function NextButtonClick(CurPage: Integer): Boolean; begin Result:=True; If CurPage=1 then begin if IsAppRunning() then begin MsgBox('Клиент игры World of Tanks в настоящее время запущен.' #13#13 'Необходимо закрыть его перед продолжением установки.', mbError, MB_OK); Result:=False; end else Result:=True; end; end; |
|
------- Отправлено: 20:04, 25-11-2014 | #2030 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|