wasp200486 Posted January 8, 2021 Share Posted January 8, 2021 40 минут назад, Kotyarko_O сказал: Подразумевается использование готового проекта с таким видом или попытка повторить такое с нуля? Исходник этого скрипта нашел на просторах @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted January 8, 2021 Share Posted January 8, 2021 1 minute ago, wasp200486 said: Исходник этого скрипта нашел на просторах Или он неполный, или неправильно его собираете @ Quote Link to comment Short link Share on other sites More sharing options...
zloyfilya Posted January 11, 2021 Share Posted January 11, 2021 Помогите скиньте код этой минюшки и что и куда вставить чтобы работало пожалуйста если не сложно: или @ Quote Link to comment Short link Share on other sites More sharing options...
hacker2021 Posted February 27, 2021 Share Posted February 27, 2021 а как добавить моды в один пакет установщика например я добавил но когда установил выбрав одного мода из них установились все моды 19.11.2013 в 01:30, EvilAlex сказал: Доброго времени суток ! Видел пару раз темы, где люди искали программу или скрипт которые бы собирали моды в одну прогу и после этого могли их устанавливать на выбор ! Нашел на форумах одну вещицу так скажем! Сам скрипт + пара модов для теста: ScriptModPack.rar 54,3 МБ Программа с помощью которой собирается инсталлятор: InnoUltra.exe 54 МБ Скриншоты: Показать содержимое Что нового: Показать содержимое Ver. 2.4.124 - Упростил скрипт. - добавил определения папки установки если игра была установлена, если же скопирована инсталятор предлагает свой путь. - обновил Сообщения в инстоляторе. - внешний вид не менял. - добавил Лицензию и ФАК. Ver. 2.3 - Добавил в скрипт небольшое описание. - Добавил скрипт с Сообщениями иснтоллятора и выбор языка. - Вынес в отдельный скрипт компоненты - моды. - Внутри есть 2psd - Вместо ссылки на группу Кран'а теперь логотип нашего форума с сыллкой на негоже) Русская справка к версии 5.5.1, автор перевода BagIra, bugron ISetup.rar 1 MB · 1 565 скачиваний "Дополнительные скрипты " Показать содержимое Проверка папки установки: function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; case CurPageID of wpSelectDir: if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin MsgBox('Не верно указана папка World of Tanks!', mbError, MB_OK); Result := False; end; end; end; Набор скриптов, библиотек с их использованием (Автор: Kotyarko_O): Набор скриптов, библиот…нием.rar - 31,12 МБ @ Quote Link to comment Short link Share on other sites More sharing options...
asterix93 Posted February 28, 2021 Share Posted February 28, 2021 @hacker2021 Тык это чтобы научиться Либо от Kotyarko_OKMP Source Code MODER_MP Source Code 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Hacker_2021 Posted March 1, 2021 Share Posted March 1, 2021 @asterix93 там просто популярные мододелы и всё а что за файлы ? 28.02.2021 в 15:35, asterix93 сказал: MODER_MP Source Code 28.02.2021 в 15:35, asterix93 сказал: KMP Source Code есть кто нибудь из вас из 2021? который может отвечать на мои вопросы ? мой вопрос в том, что я использовал эту программу < JMPACK > и собрал все моды в один пакет но они все устанавливаются сразу мне нужно чтобы они устанавливались отдельно от выбора фото доказательство, показанное выше https://koreanrandom.com/forum/uploads/monthly_2021_02/1138695088_(41).png.9e0c7b5c461ad1c6ab92350e7f47b152.png , обмен сообщениями по почте или в любой социальной сети, если это возможно ( на форуме неудобно совсем добавить ответ создать тему и так далее ).) @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 1, 2021 Share Posted March 1, 2021 @Hacker_2021 , вам нужно искать профильную тему инструмента, который вы используете. Там и задавать вопросы. @ Quote Link to comment Short link Share on other sites More sharing options...
Hacker_2021 Posted March 1, 2021 Share Posted March 1, 2021 @Kotyarko_O типа справку ? если вы имели ввиду ее вот она JMPACK.chm @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 1, 2021 Share Posted March 1, 2021 Just now, Hacker_2021 said: типа справку ? Типа тему. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Hacker_2021 Posted March 1, 2021 Share Posted March 1, 2021 его давно не было в сети посмотрю отписал напишет ли это уже неизвестно @ Quote Link to comment Short link Share on other sites More sharing options...
hacker2021 Posted March 1, 2021 Share Posted March 1, 2021 сделайте видеоурок я для вас оставлю ссылку как это работает в 2021 году под патч 1.12 вот исходники ( моды) backup_data (26.02.2021, 09-27-28).zip @ Quote Link to comment Short link Share on other sites More sharing options...
DraugDM Posted March 17, 2021 Share Posted March 17, 2021 Можно ли сделать отображение на компах где нет русского языка читаемый шрифт? может шрифт какой прописать? ) @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 17, 2021 Share Posted March 17, 2021 (edited) 27 минут назад, DraugDM сказал: Можно ли сделать отображение Название этих элементов нужно прописать в CustomMessages [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" Name: "eng"; MessagesFile: "compiler:Languages\English.isl" [CustomMessages] ; Russian rus.delete=Удалить установленные моды (рекомендуется) ; English eng.delete=Remove installed mods (recommended) В секции Code ExpandConstant('{cm:delete}') Edited March 17, 2021 by night_dragon_on Обновление ... 2 @ Quote Link to comment Short link Share on other sites More sharing options...
DraugDM Posted March 17, 2021 Share Posted March 17, 2021 Только что, night_dragon_on сказал: Название этих элементов нужно прописать в CustomMessages [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" Name: "eng"; MessagesFile: "compiler:Languages\English.isl" [CustomMessages] ; Russian rus.delete=Удалить установленные моды (рекомендуется) ; English eng.delete=Remove installed mods (recommended) В секции Code ExpandConstant('{cm:delete}') что то у меня с этой секцией код какие то траблы при компелировании(( @ Quote Link to comment Short link Share on other sites More sharing options...
night_dragon_on Posted March 17, 2021 Share Posted March 17, 2021 @DraugDM строку: ExpandConstant('{cm:delete}') Нужно было не просто в секцию Code скопировать, а в то место где прописано наименование компонента который требуется перевести. Вписать взамен этого наименования. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
DraugDM Posted March 17, 2021 Share Posted March 17, 2021 Только что, night_dragon_on сказал: @DraugDM строку: ExpandConstant('{cm:delete}') Нужно было не просто в секцию Code скопировать, а в то место где прописано наименование компонента который требуется перевести. Вписать взамен этого наименования. Спасибо дружище! Заработало)) @ Quote Link to comment Short link Share on other sites More sharing options...
ferrat Posted March 18, 2021 Share Posted March 18, 2021 приветствую гуру кодописания )) Кто то может подсобить с изменением кода. Вот есть код резервного копирования, может кто то изменить так что бы , если встречается еще один файл с таким же именем, то он бекапился на цифру больше, к примеру mmm_back, mmm_back_01, mmm_back_02 и тд и что бы они так же при деинсталляции восстанавливались. По логике первый бекап и есть оригинал, так что достаточно его и восстановить при деинсталяции остальное просто удалить или что бы не мудрить восстанавливать от последнего к первому. Ну или может у кого готовый рабочий есть под такую задачу, вдруг...:beer: procedure CreateBackup; var srcFile, destFile: string; begin srcFile:= ExpandConstant(CurrentFileName); destFile:= srcFile + '.gom_bak'; /// тут по умолчанию расширение ' .bak DeleteFile(destFile); RenameFile(srcFile, destFile); end; procedure RestoreBackup(backupDir: string); var srcFile, destFile: string; FSR, DSR: TFindRec; FindResult: Boolean; APath: string; begin APath := AddBackslash(backupDir); FindResult := FindFirst(APath + '*.gom_bak', FSR); /// тут по умолчанию расширение '*.bak try while FindResult do begin if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin srcFile:= APath + FSR.Name; destFile:= Copy(srcFile, 0, Length(srcFile)-8); ///тут указано количество символов удаляемых с названия при восстановлении оригинального файла. По умолчанию -4 DeleteFile(destFile); RenameFile(srcFile, destFile); end; FindResult := FindNext(FSR); end; FindResult := FindFirst(APath + '*.*', DSR); while FindResult do begin if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then {Recursion} RestoreBackup(APath + DSR.Name); FindResult := FindNext(DSR); end; finally FindClose(FSR); FindClose(DSR); end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin if CurUninstallStep = usPostUninstall then begin RestoreBackup(ExpandConstant('{app}')) end; end; @ Quote Link to comment Short link Share on other sites More sharing options...
Kotyarko_O Posted March 18, 2021 Share Posted March 18, 2021 27 minutes ago, ferrat said: Вот есть код резервного копирования, может кто то изменить так что бы , если встречается еще один файл с таким же именем, то он бекапился на цифру больше, к примеру mmm_back, mmm_back_01, mmm_back_02 и тд и что бы они так же при деинсталляции восстанавливались. По логике первый бекап и есть оригинал, так что достаточно его и восстановить при деинсталяции остальное просто удалить или что бы не мудрить восстанавливать от последнего к первому. А если пользователь не знает о существовании деинсталлятора и постоянно накатывает поверх того, что у него есть? Тогда индекс может достигнуть и 50, и 100, и больше. Нужна ли такая куча бекапов пользователю, пусть он и не знает о ней? В таком случае лучше хранить всегда один экземпляр бекапа - последний. Описанное вами реализовать не сложно. Вопрос в том, действительно ли такая реализация вам нужна) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
ferrat Posted March 18, 2021 Share Posted March 18, 2021 (edited) Цитата А если пользователь не знает о существовании деинсталлятора и постоянно накатывает поверх того, что у него есть? Тогда индекс может достигнуть и 50, и 100, и больше. Нужна ли такая куча бекапов пользователю, пусть он и не знает о ней? В таком случае лучше хранить всегда один экземпляр бекапа - последний. Описанное вами реализовать не сложно. Вопрос в том, действительно ли такая реализация вам нужна) Тогда его проблемы, если читать не умеет предостережения и инструкции при установке каких либо пакетов. Хотя даже при таком варианте это меня не спасает от остатка лишних файлов после деинсталляции. По сути нужно было такое: 1) есть игра 2) есть мод , который ставится на чистую игру. И так: Дабы не заниматься тратой времени и не сравнивать кучу файлов, инстал собирается с папок, выборочная установка. А значит, что в каждом выбранном пункте для установки может содержаться одинаковые но модифицированные файлы. И получается , что если бекапить при установке, то файлы которых нет в оригинальной игре но в нескольких копиях содержится в инсталляторе, будет добавлен, забекаплен раз или два к примеру, но при деинсталяции первая его копия останется в игре в виде лишних файлов, что не есть хорошо. И тут ситуация вопроса , как все сделать что бы игра после удаления мода приобрела свое перевальное состояние файлов и папок. Это либо делать полный лист перед установкой папки игры и копируя встречающиеся файлы игры раз бекапить а второй раз перезаписывать, но дополнительные файлы не входящие в созданный лист игры копировать но не бекапить и перезаписывать, тогда при удалении мода мы , если все верно, получим первоначальное состояние папки игры . Может немного сумбурно, но попробовал описать проблему ))) И теперь , если этот набор слов, был хоть как то понят, есть ли вариант это реализовать кодом ? И сложно ли это? Если нет, то возможно ли такое в вашем исполнении маэстро ? Edited March 18, 2021 by ferrat @ Quote Link to comment Short link Share on other sites More sharing options...
F1nder Posted April 27, 2021 Share Posted April 27, 2021 Добрый день! Возникла у меня одна проблемка надеюсь кто-то поможет. Сделал я в модпаке отображение картинок казалось бы все работает. Но через некий промежуток времени они перестают отображаться и вешають весь инсталятор намертво. Плюс довольно долго запусаеться сам инсталятор. Вот кидаю код может поможете? [Code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const UNDEF_INDEX = -777; ALPHA_BLEND_LEVEL = 255; // max=Byte=255 WS_EX_LAYERED = $80000; WS_EX_TRANSPARENT = $20; LWA_COLORKEY = 1; LWA_ALPHA = 2; GWL_EXSTYLE = (-20); var InfoPic: TBitmapImage; LastIndex: Integer; TempPath: String; PicForm: TForm; type COLORREF = DWORD; function GetCursorPos(var lpPoint: TPoint): BOOL; external '[email protected] stdcall'; function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external '[email protected] stdcall'; function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall'; function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall'; function SetFocus(hWnd: HWND): HWND; external '[email protected] stdcall'; function MyDirName(S:String): String; var InsPath: String; er: boolean; myFile:String; begin Result:=ExpandConstant('C:\Games\World_of_Tanks\'); //если ключа нет то будем ставить сюда er := RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{1EAC1D02-C6AC-4FA6-9A44-96258C37C812RU}_is1', 'InstallLocation', InsPath); if er and (InsPath<>'') then //если ключ существует и там что-то записано begin Result := InsPath; end; end; procedure LogoOnClick(Sender: TObject); var ResCode: Integer; begin ShellExec('', '{#MyAppURL}', '' , '', SW_SHOW, ewNoWait, ResCode) end; 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 Caption := ExpandConstant('{cm:Main}'); end; with WizardForm.WizardBitmapImage do begin Width := ScaleX(502); end; with WizardForm.WelcomeLabel2 do begin Visible := False; end; with WizardForm.WelcomeLabel1 do begin Visible := False; end; with WizardForm.WizardSmallBitmapImage do begin Left := ScaleX(0); Width := ScaleX(502); Height := ScaleY(70); end; with WizardForm.PageDescriptionLabel do begin Visible := False; end; with WizardForm.PageNameLabel do begin Visible := False; end; with WizardForm.WizardBitmapImage2 do begin Width := ScaleX(502); end; with WizardForm.FinishedLabel do begin Visible := False; end; with WizardForm.FinishedHeadingLabel do begin Visible := False; end; end; procedure ShowPicHint(const PicFilePath: String); var pt: TPoint; begin if not GetCursorPos(pt) then Exit; InfoPic.Bitmap.LoadFromFile(PicFilePath); try with PicForm do begin SetBounds(ScaleX(pt.x + 16), ScaleY(pt.y + 7), InfoPic.Width, InfoPic.Height); Show; end; finally SetFocus(WizardForm.Handle); end; end; procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); var UndefPic: String; begin if Index = -1 then Exit; if Index = LastIndex then Exit; try case TNewCheckListBox(Sender).ItemCaption[Index] of 'Белые сбитые гусеницы': UndefPic := '1.bmp'; 'Белые трупы танов': UndefPic := '2.bmp'; 'Калькулятор WN8 в бою': UndefPic := '3.bmp'; 'Мод достижений в бою': UndefPic := '10.bmp'; 'Процент отметки в бою': UndefPic := '18.bmp'; 'Маркеры с отлетающим уроном': UndefPic := '12.bmp'; 'Калькулятор брони в ангаре': UndefPic := '4.bmp'; 'Просмотр попаданий в ангаре': UndefPic := '13.bmp'; 'Менеджер реплеев': UndefPic := '9.bmp'; 'Процент побед на танках в ангаре': UndefPic := '14.bmp'; else begin LastIndex := UNDEF_INDEX; PicForm.Hide; Exit; end; end; if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic); ShowPicHint(TempPath + UndefPic); finally LastIndex := Index; end; end; procedure CompOnMouseLeave(Sender: TObject); begin PicForm.Hide; LastIndex := -1; end; procedure InitInfo(); begin WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove; WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave; TempPath := AddBackslash(ExpandConstant('{tmp}')); LastIndex := UNDEF_INDEX; PicForm := TForm.Create(WizardForm) with PicForm do begin BorderStyle := bsNone; FormStyle := fsStayOnTop; InfoPic := TBitmapImage.Create(PicForm) with InfoPic do begin Parent := PicForm; AutoSize := True; end; end; SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA); end; procedure InitializeWizard(); begin InitInfo(); RedesignWizardForm; end; @ 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.