enisgecgen Posted November 8, 2017 Share Posted November 8, 2017 3 часа назад, ЛОМ сказал: лучше бы на английском написал )))) так вообще ничего не понятно ))) вот это тебе нужно? #define Patch "0.9.20.1.2" #include "SHFileOperation.iss" [Code] var DeleteRadioButton, MoveRadioButton, NoneRadioButton: TRadioButton; DeleteCashAndLogsCheckBox, DeleteUpdatesCheckBox: TCheckBox; const DeleteDescText = 'Установщик удалит все файлы в папках.'; MoveDescText = 'Установщик сделает резервную копию файлов.'; NoneDescText = 'Установщик не будет ничего трогать.'; function BackupCheck_1(): Boolean; var DeleteDescLabel, MoveDescLabel, NoneDescLabel: TLabel; begin DeleteRadioButton:=TRadioButton.Create(WizardForm); DeleteRadioButton.SetBounds(0, 120, WizardForm.RunList.Width, 20) DeleteRadioButton.Checked:=True; DeleteRadioButton.Caption:='Удалить моды'; DeleteRadioButton.Parent:=WizardForm.SelectDirPage; DeleteDescLabel:=TLabel.Create(WizardForm); DeleteDescLabel.Parent:=WizardForm.SelectDirPage; DeleteDescLabel.Left:=0; DeleteDescLabel.Top:=DeleteRadioButton.Top + DeleteRadioButton.Height; DeleteDescLabel.Width:=WizardForm.SelectDirPage; DeleteDescLabel.Height:=20; DeleteDescLabel.AutoSize:=False; DeleteDescLabel.Wordwrap:=True; DeleteDescLabel.Caption:=DeleteDescText; MoveRadioButton:=TRadioButton.Create(WizardForm); MoveRadioButton.SetBounds(0, 160, WizardForm.RunList.Width, 20) MoveRadioButton.Checked:=False; MoveRadioButton.Caption:='Сделать резервную копию модов'; MoveRadioButton.Parent:=WizardForm.SelectDirPage; MoveDescLabel:=TLabel.Create(WizardForm); MoveDescLabel.Parent:=WizardForm.SelectDirPage; MoveDescLabel.Left:=0; MoveDescLabel.Top:=MoveRadioButton.Top + MoveRadioButton.Height; MoveDescLabel.Width:=WizardForm.SelectDirPage; MoveDescLabel.Height:=20; MoveDescLabel.AutoSize:=False; MoveDescLabel.Wordwrap:=True; MoveDescLabel.Caption:=MoveDescText; NoneRadioButton:=TRadioButton.Create(WizardForm); NoneRadioButton.SetBounds(0, 200, WizardForm.RunList.Width, 20) NoneRadioButton.Checked:=False; NoneRadioButton.Caption:='Ничего не трогать'; NoneRadioButton.Parent:=WizardForm.SelectDirPage; NoneDescLabel:=TLabel.Create(WizardForm); NoneDescLabel.Parent:=WizardForm.SelectDirPage; NoneDescLabel.Left:=0; NoneDescLabel.Top:=NoneRadioButton.Top + NoneRadioButton.Height; NoneDescLabel.Width:=WizardForm.SelectDirPage; NoneDescLabel.Height:=20; NoneDescLabel.AutoSize:=False; NoneDescLabel.Wordwrap:=True; NoneDescLabel.Caption:=NoneDescText; DeleteCashAndLogsCheckBox:=TCheckBox.Create(WizardForm); DeleteCashAndLogsCheckBox.SetBounds(0, 240, WizardForm.RunList.Width, 20) DeleteCashAndLogsCheckBox.Checked:=True; DeleteCashAndLogsCheckBox.Caption:='Очистить кэш и логи'; DeleteCashAndLogsCheckBox.Parent:=WizardForm.SelectDirPage; DeleteUpdatesCheckBox:=TCheckBox.Create(WizardForm); DeleteUpdatesCheckBox.SetBounds(150, 240, WizardForm.RunList.Width, 20) DeleteUpdatesCheckBox.Checked:=True; DeleteUpdatesCheckBox.Caption:='Очистить папку Updates, освободив место на диске'; DeleteUpdatesCheckBox.Parent:=WizardForm.SelectDirPage; end; function BackupCheck_2(): Boolean; begin If DeleteRadioButton.Checked then begin DelTree(ExpandConstant('{app}\res_mods'), True, True, True); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}')); DelTree(ExpandConstant('{app}\mods'), True, True, True); CreateDir(ExpandConstant('{app}\mods\{#Patch}')); end; end; function BackupCheck_3(): Boolean; begin If MoveRadioButton.Checked then begin MoveDir(ExpandConstant('{app}\res_mods\'),ExpandConstant('{app}\res_mods\backup\res_mods')); CreateDir(ExpandConstant('{app}\res_mods\{#Patch}')); MoveDir(ExpandConstant('{app}\mods\'),ExpandConstant('{app}\mods\backup\mods')); CreateDir(ExpandConstant('{app}\mods\{#Patch}')); end; end; function BackupCheck_4(): Boolean; begin If DeleteCashAndLogsCheckBox.Checked then begin DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\account_caches\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\awesomium_cache\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\battle_results\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\clan_cache\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\custom_data\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\dossier_cache\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\messenger_cache\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\tutorial_cache\'), True, True, True); DelTree(ExpandConstant('{userappdata}\wargaming.net\WorldOfTanks\xvm'), True, True, True); end; end; function BackupCheck_5(): Boolean; begin If DeleteUpdatesCheckBox.Checked then begin DelTree(ExpandConstant('{app}\Updates'), True, True, True); CreateDir(ExpandConstant('{app}\Updates')); end; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssInstall then begin BackupCheck_2(); BackupCheck_3(); BackupCheck_4(); BackupCheck_5(); end; end; procedure InitializeWizard1(); begin BackupCheck_1(); end; procedure InitializeWizard2(); begin InitInfo(); end; procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); end; I try it but i see a wrong some... @ Quote Link to comment Short link Share on other sites More sharing options...
Lom Posted November 8, 2017 Share Posted November 8, 2017 sergy2010 ты понимаешь о чем он ? ))) 4 часа назад, enisgecgen сказал: I try it but i see a wrong some... вот это ты скачивал? - https://bitbucket.org/Kotyarko_O/kmp/downloads/ @ Quote Link to comment Short link Share on other sites More sharing options...
enisgecgen Posted November 9, 2017 Share Posted November 9, 2017 its ok i solved :) @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 9, 2017 Share Posted November 9, 2017 (edited) как можно сделать отключалку для компонента если выбран другой опред. компонент? конкретно на примере disable_Components.iss если выбран subComponent1 отключался бы subComponent3 если выбран subComponent2 отключался бы subComponent4 Edited November 9, 2017 by tunut @ Quote Link to comment Short link Share on other sites More sharing options...
Lom Posted November 9, 2017 Share Posted November 9, 2017 5 часов назад, tunut сказал: как можно сделать отключалку для компонента если выбран другой опред. компонент? конкретно на примере disable_Components.iss если выбран subComponent1 отключался бы subComponent3 если выбран subComponent2 отключался бы subComponent4 А так не? ; Скрипт создан через Мастер Inno Setup Script. ; ИСПОЛЬЗУЙТЕ ДОКУМЕНТАЦИЮ ДЛЯ ПОДРОБНОСТЕЙ ИСПОЛЬЗОВАНИЯ INNO SETUP! #define MyAppName "My Program" #define MyAppVersion "1.5" #define MyAppPublisher "My Company, Inc." #define MyAppURL "http://www.example.com/" #define MyAppExeName "MyProg.exe" [Setup] ; Примечание: Значение AppId идентифицирует это приложение. ; Не используйте одно и тоже значение в разных установках. ; (Для генерации значения GUID, нажмите Инструменты | Генерация GUID.) AppId={{E19D7322-450D-48AC-8AE6-9C0BF2A42CE6} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}\{#MyAppName} DefaultGroupName={#MyAppName} OutputBaseFilename=setup Compression=lzma SolidCompression=yes OutputDir=. [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Components] Name: Component0; Description: на выбор; Flags: disablenouninstallwarning Name: F\1; Description: ПЕРВЫЙ ВАРИАНТ; Flags: exclusive disablenouninstallwarning Name: F\1\1; Description: Component 1 Name: F\1\2; Description: Component 2 Name: FF\0; Description: ВТОРОЙ ВАРИАНТ; Flags: exclusive disablenouninstallwarning Name: FF\0\1; Description: Component 3 Name: FF\0\2; Description: Component 4 [Files] Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion ; Примечание: Не используйте "Flags: ignoreversion" для системных файлов [Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 9, 2017 Share Posted November 9, 2017 30 минут назад, ЛОМ сказал: А так не? спасибо но нет, нужно именно чтобы отключался т.е. стал серым если поставить галочку на Component1 - Component3 стал бы серым галочку снять = оба доступны @ Quote Link to comment Short link Share on other sites More sharing options...
Nowik1971 Posted November 9, 2017 Share Posted November 9, 2017 3 минуты назад, tunut сказал: спасибо но нет, нужно именно чтобы отключался т.е. стал серым если поставить галочку на Component1 - Component3 стал бы серым галочку снять = оба доступны Флагом Flags: exclusive поиграйся я так делал, но он не всегда подходит читай справку и примеры с этим флагом 1 @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 9, 2017 Share Posted November 9, 2017 1 минуту назад, Nowik1971 сказал: Флагом Flags: exclusive поиграйся поигрался и в справке читал, это не то @ Quote Link to comment Short link Share on other sites More sharing options...
enisgecgen Posted November 9, 2017 Share Posted November 9, 2017 Hello again, how can we display the photos in a separate window ? Example : Aslain.com have show preview window button @ Quote Link to comment Short link Share on other sites More sharing options...
sergy2010 Posted November 9, 2017 Share Posted November 9, 2017 17 минут назад, tunut сказал: поигрался и в справке читал, это не то Fixed в конце поставь и будет серым 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Lom Posted November 9, 2017 Share Posted November 9, 2017 (edited) да ему не именно серым надо))) он имеет ввиду если выбран 1 пункт то нельзя выбрать 3 а если выбран 2 то нельзя выбрать 4. Fixed тут не прокатит ведь. а серым он должен становится потому что нельзя уже выбрать))) Edited November 9, 2017 by ЛОМ @ Quote Link to comment Short link Share on other sites More sharing options...
sergy2010 Posted November 9, 2017 Share Posted November 9, 2017 ну тогда новика пост под его описание подходит 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Lom Posted November 9, 2017 Share Posted November 9, 2017 (edited) 10 минут назад, enisgecgen сказал: Hello again, how can we display the photos in a separate window ? Example : Aslain.com have show preview window button если гугл переводчик правильно перевёл то это то что тебе нужно https://koreanrandom.com/forum/topic/9050-создание-инсталляторов-для-модпаков-на-базе-inno-setup/?do=findComment&comment=137089 Edited November 9, 2017 by ЛОМ @ Quote Link to comment Short link Share on other sites More sharing options...
enisgecgen Posted November 9, 2017 Share Posted November 9, 2017 3 минуты назад, ЛОМ сказал: если гугл переводчик правильно перевёл то это то что тебе нужно https://koreanrandom.com/forum/topic/9050-создание-инсталляторов-для-модпаков-на-базе-inno-setup/?do=findComment&comment=137089 Now i can see this style :) but i want to aslain stlye :) one sec i will add pictures. @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted November 9, 2017 Share Posted November 9, 2017 (edited) 6 hours ago, tunut said: как можно сделать отключалку для компонента если выбран другой опред. компонент? конкретно на примере disable_Components.iss если выбран subComponent1 отключался бы subComponent3 если выбран subComponent2 отключался бы subComponent4 Например: [Code] Procedure ComponentsListOnClickCheck(Sender: TObject); begin with WizardForm.ComponentsList do begin if IsComponentSelected('Component0\subComponent1') then CheckItem(Items.IndexOf('Component 3'), coUncheck); if IsComponentSelected('Component0\subComponent2') then CheckItem(Items.IndexOf('Component 4'), coUncheck); end; end; Procedure InitializeWizard(); begin WizardForm.ComponentsList.OnClickCheck := @ComponentsListOnClickCheck; end; Но это не удобно. Можно сделать универсальнее. Edited November 9, 2017 by Kotyarko_O 1 @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 9, 2017 Share Posted November 9, 2017 12 минуты назад, Kotyarko_O сказал: Например: вот только серым отключаемый компонент не становиться, просто невозможно его выбрать 13 минуты назад, Kotyarko_O сказал: Можно сделать универсальнее. эмммк ак ? @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted November 9, 2017 Share Posted November 9, 2017 @tunut В идеале, сделать регистрацию "несовместимых" компонентов в более-менее удобном виде, однострочно. Ну и проверка, естественно, автоматическая, а не "вручную". Типа такого в итоге: Procedure InitializeWizard(); begin ... SetUncompatibleItems(['Component 1'], ['Component 2', 'Component 3']); SetUncompatibleItems(['Component 2'], ['Component 3']); end; То есть, при выборе какого-нибудь компонента из заданного первого массива, будут отключаться все заданные из второго. В реализации ничего сложного: заполняем тип, проверку делаем из того же события (OnClickCheck), в котором просто подстановка и действия. А чтобы сделать компонент "серым", просто ему допиши Enabled := False. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 9, 2017 Share Posted November 9, 2017 2 часа назад, Kotyarko_O сказал: В реализации ничего сложного ещё бы... прочел дальше и понял что это текст заклинания какого то, ничего в ум не пришло что и как сделать. @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted November 9, 2017 Share Posted November 9, 2017 (edited) @tunut Как-то так: disable_Components.iss Теперь группы компонентов, которые нужно сделать "зависимыми", указываются просто: SetUncompatibleItems(CheckListBox, [priority components 1], [depended components 1]); SetUncompatibleItems(CheckListBox, [priority components 2], [depended components 2]); Edited November 9, 2017 by Kotyarko_O 2 @ Quote Link to comment Short link Share on other sites More sharing options...
tunut Posted November 10, 2017 Share Posted November 10, 2017 6 часов назад, Kotyarko_O сказал: указываются просто: круть, а где прикрутить Enabled := False. ? @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.