Kotyarko_O 1,906 #411096 Posted November 10, 2017 @tunut Добавил параметр (true\false) для возможности отключения "несовместимых" компонентов: disable_Components.iss 1 Quote Share this post Link to post Short link Share on other sites
enisgecgen 0 #411149 Posted November 10, 2017 Hello, I delete the old files while installing but do not delete them from within the folder Who can help me ? Quote Share this post Link to post Short link Share on other sites
Lom 48 #411150 Posted November 10, 2017 4 минуты назад, enisgecgen сказал: Hello, I delete the old files while installing but do not delete them from within the folder Who can help me ? show the code used 1 Quote Share this post Link to post Short link Share on other sites
enisgecgen 0 #411157 Posted November 10, 2017 1 час назад, ЛОМ сказал: show the code used This is ur codes. the codes you gave yesterday Цитата #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; Quote Share this post Link to post Short link Share on other sites
Lom 48 #411159 Posted November 10, 2017 8 минут назад, enisgecgen сказал: This is ur codes. the codes you gave yesterday this is a working code. I have the same running. need to see all the contents of the mod pack 1 Quote Share this post Link to post Short link Share on other sites
sergy2010 24 #411175 Posted November 10, 2017 3 часа назад, ЛОМ сказал: this is a working code. I have the same running. need to see all the contents of the mod pack Руслан лучше по французки у тебя пользователь от туда был и ты этот язык лучше выучил)))))))))))))))))))))))) 1 1 Quote Share this post Link to post Short link Share on other sites
enisgecgen 0 #411206 Posted November 11, 2017 16 часов назад, ЛОМ сказал: Bu bir çalışma kodu. Aynı koşuya sahibim. mod paketinin tüm içeriğini görmek gerekiyor How can i do upload there? and what u want all source kods? Quote Share this post Link to post Short link Share on other sites
Lom 48 #411263 Posted November 11, 2017 2 часа назад, enisgecgen сказал: How can i do upload there? and what u want all source kods? you already have working code. 1 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #411792 Posted November 15, 2017 народ. а есть код чтобы при удалении мод-пака ( файлом unins000.dat ) если игра открыта, выводило сообщение мол закройте сначала игру и тд... 1 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #411801 Posted November 15, 2017 (edited) @ЛОМ А что мешает использовать проверку, которая отрабатывает при установке? Вынести проверку отдельно. Использовать при установке и при деинсталляции. Edited November 15, 2017 by Kotyarko_O 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #411819 Posted November 15, 2017 47 минут назад, Kotyarko_O сказал: @ЛОМ А что мешает использовать проверку, которая отрабатывает при установке? Вынести проверку отдельно. Использовать при установке и при деинсталляции. я правильно понял если мне нужно только при деинсталляции то мне нужно тока это в код... #define CheckForGameRun #ifdef CheckForGameRun Function CheckForGameRun(): Boolean; var ResultCode: Integer; begin Result := False; if CMDCheckParams(NoCheckForRun) and not IsUninstaller() then Exit; if (FindWindowByWindowName('World of Tanks (Online Game)') <> 0) or (FindWindowByWindowName('WoT Client') <> 0) then begin if MsgBoxEx(0, 'Обнаружено запущенное приложение {#MyAppVersion}. Перед продолжением требуется закрыть все экземпляры приложения.' + #13#10 + 'Закрыть игру?', 'Внимание!', MB_YESNO + MB_DEFBUTTON1 or MB_ICONWARNING, 0, 0) = IDYES then begin Exec(ExpandConstant('{cmd}'), '/C TASKKILL /F /IM "WorldOfTanks.exe" /IM "WoTLauncher.exe"', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); case ResultCode of 0: Result := True; 128: Result := True; end; end; end else Result := True; end; #endif Function InitializeUninstall(): Boolean; begin Result := True; #ifdef CheckForGameRun Result := CheckForGameRun(); #endif end; у меня юникод версия и ошибку выдаёт. сто пудово что то не туда прописываю))) 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #411820 Posted November 15, 2017 @ЛОМ Строки 173 и 174 можешь просто убрать. И препроцессорные строки зря скопировал, они тебе не нужны. 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #411825 Posted November 15, 2017 27 минут назад, Kotyarko_O сказал: @ЛОМ Строки 173 и 174 можешь просто убрать. И препроцессорные строки зря скопировал, они тебе не нужны. терь всё как надо. спасибо большое)) 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #412048 Posted November 17, 2017 (edited) народ два вопроса, подскажите пожалуйста. как говорилось в одном фильме - " и да не оскудеет рука дающего и да не отсохнет рука берущего " 1-ый вопрос. к примеру я ставлю моды и выбрал всего несколько модов ( скока не важно ). затем если я не удалял модпак через unins000.exe то когда я снова открываю установщик то там уже бывают отмечены на установку и те пункты которые я не ставил. по ходу именно те пункты в которых есть радиобутоны. а если я удалил модпак unins000.exe то тогда всё нормально и нигде галочки не стоят. флаги прописаны вот тока эти - Flags: exclusive disablenouninstallwarning и 2-ой вопрос. на счет автопоиска игры по реестру. я использую вот этот код [Setup] DefaultDirName={code:WotDirNameRU} [code] function WotDirNameRU(Path: String): String; // ключ для основного клиента {1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1 begin if RegKeyExists(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then begin RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path); Result := Path end else if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then begin RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path); Result := Path end else if RegKeyExists(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then begin RegQueryStringValue(HKCU, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path); Result := Path end else if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1') then begin RegQueryStringValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', Path); Result := Path end else Result := ExpandConstant('C:\Games\World_of_Tanks'); end; но дело в том что к примеру у меня игра на диске "D" и он её находит и всё нормально. затем, я на диске "C" так же сделал папку с игрой в которую закинул файл WorldOfTanks.exe. ( ну это я для себя так, моды проверить на свежесть так сказать и тому подобное, короче не это главное ) так вот при открытии мод-пака он мне конечно показывает правильный путь "D". но если я поставлю моды на диск "C" то при следующем открытии мод-пака он уже будет всё время выдавать путь на диск "C" пока я не удалю мод-пак через unins000.exe. но.. не помню чей это был мод-пак но там, куда бы я не ставил моды при повторной установке он всё так же указывал правильный путь а не как у меня. как я понял кодов поиска по реестру не один и не два))) мне бы именно такой у кого есть))) Edited November 17, 2017 by ЛОМ 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #412052 Posted November 17, 2017 1 hour ago, ЛОМ said: 1-ый вопрос. По умолчанию, инно всегда пытается дополнять существующие записи предыдущих установок. Из-за этого и отмеченные компоненты могут перемешаться. Если интересно: http://www.jrsoftware.org/ishelp/topic_appendnotes.htm Выхода два: Отключить стандартное сохранение информации о компонентах и делать всё в рантайме: https://bitbucket.org/Kotyarko_O/kmp/src/39a2eb6f8a5e34236f1c4ab404c7ee61f27acc76/Resourses/ParamsRememberer.iss?at=master&fileviewer=file-view-default#ParamsRememberer.iss-28 (Пример работы с реестром, но можно и стандартными средствами, записывая кастомную инфу в деинсталлятор). [Setup] UninstallLogMod=new Но при этом есть вероятность, что файлы, оставшиеся с прошлых установок, после деинсталляции останутся на своих местах (если не предусмотрено принудительное удаление). 2 hours ago, ЛОМ said: 2-ой вопрос Это тоже связано с правилами восстановления информации прошлых установок. Тут DefaultDirName не в приоритете. Но вообще, это правильно. Так инсталляторы и должны работать. Не нравится - используй это: [Setup] UsePreviousAppDir=no 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #412080 Posted November 17, 2017 4 часа назад, Kotyarko_O сказал: [Setup] UninstallLogMod=new вот это правильно написано? а то вставляю а он по цвету даже видно что, что то не то. а 2-ой вопрос помогло ))) 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #412090 Posted November 17, 2017 (edited) 40 minutes ago, ЛОМ said: вот это правильно написано? а то вставляю а он по цвету даже видно что, что то не то. Моя опечатка. Должно быть "UninstallLogMode". Edited November 17, 2017 by Kotyarko_O 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #412120 Posted November 17, 2017 4 часа назад, Kotyarko_O сказал: Моя опечатка. Должно быть "UninstallLogMode". короче не помогает [Setup] UninstallLogModе=new ладно главное второй вопрос решен. спасибо большое)) 1 Quote Share this post Link to post Short link Share on other sites
Lom 48 #412246 Posted November 18, 2017 народ а в установщике пункт типа " восстановление ранее ( ну или последней ) установленной версии " можно как то сделать*? 1 Quote Share this post Link to post Short link Share on other sites
Kotyarko_O 1,906 #412698 Posted November 21, 2017 Сделал модуль для гуглоаналитики. Quote Share this post Link to post Short link Share on other sites