-
Posts
1,528 -
Joined
-
Last visited
-
Days Won
10
AtotIK last won the day on January 28
AtotIK had the most liked content!
Reputation
580 ⭐⭐⭐Basic information
-
Gender
Мужчина
Contacts
-
Nick
AtotIK
Recent Profile Visitors
17,194 profile views
-
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
Всё уже придумано для вас, осталось только начать пользоваться. -
Банки без вшитого ключа работают. Но при этом ограничение на 200 звуковых файлов действует.
-
По умолчанию при установке на "диск C" система может задать права записи в папку только для администратора. Сталкивался с таким сам. Нажмите правой клавишей мыши на папку Games, далее "Свойства -- Безопасность", нажимайте кнопку "Изменить", далее "Добавить", вводите в текстовом поле "Все", нажимаете "Проверить имена". Если всё корректно, то "Все" подчеркивается. Потом "Ок", ставите галочку в "Полный доступ" и "Ок" во всех окошках и проверяйте ещё раз. Таким образом в эту папку смогут записывать и менять её содержимое все пользователи.
-
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
Зачем изобретать велосипед, если уже всё сделали и обкатали здесь? И объединить моды для WG/Lesta в один инсталлятор вообще нет проблем. В том же OpenWG.Utils есть функция CHECK_IsLesta для использования в секции [Files] или [Components]. -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
Для кого придумали это? https://gitlab.com/xvm/xvm/-/blob/master/src/installer/src/xvm.iss Прекрасно работает, а если попросите у автора - зальёт новую dll с поддержкой WG/Lesta. -
Тут посмотрите: https://bitbucket.org/IzeBerg/
- 1 reply
-
- 2
-
[Встроенные шрифты / Embeded fonts]
AtotIK replied to demon2597's topic in Components of XVM and Addons (py_macro)
Ребята, а можно отдельно в png символ лампочки в ушах, пожалуйста? -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
: = замени на := -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
А вот универсальный метод, но он сложнее. Работает везде. type HANDLE = LongInt; HMODULE = HANDLE; pHMODULE = Array[0..255] of HMODULE; LPDWORD = DWORD; PDWORD = Array[0..255] of DWORD; LPTSTR = String; function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: Boolean; dwProcessId: DWORD): HANDLE; external '[email protected] stdcall delayload'; function CloseHandle(hObject: HANDLE): BOOL; external '[email protected] stdcall delayload'; function EnumProcesses(var pProcessIds: PDWORD; cb: DWORD; var pBytesReturned: DWORD): BOOL; external '[email protected] stdcall delayload'; function EnumProcessModules(hProcess: HANDLE; var lphModule: pHMODULE; cb: DWORD; var lpcbNeeded: LPDWORD): BOOL; external '[email protected] stdcall delayload'; function GetModuleFileNameExW(hProcess: HANDLE; hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; external '[email protected] stdcall delayload'; function IsAppRunning(procName: String; FullPath: Boolean): Boolean; var Found, isModuleShot: Boolean; FilenameEnd: Integer; Filename: AnsiString; NA, Entry, maxEntries: DWORD; Processes: PDWORD; lpFilename: LPTSTR; hProcess: HANDLE; hMod: pHMODULE; begin SetLength(lpFilename, 255); Found := False; if (EnumProcesses(Processes, SizeOf(Processes), maxEntries)) then begin Entry := 0; maxEntries := maxEntries / SizeOf(maxEntries); while ((not Found) and (Entry < maxEntries)) do begin hProcess := OpenProcess($400 or $10, False, Processes[Entry]); if (hProcess <> 0) then begin isModuleShot := False; begin isModuleShot := EnumProcessModules(hProcess, hMod, SizeOf(hMod), NA); end; if (isModuleShot) then if (GetModuleFileNameExW(hProcess, hMod[0], lpFilename, Length(lpFilename)) > 0) then begin FilenameEnd := Pos(#0, lpFilename); Filename := Copy(Lowercase(lpFilename), 1, FilenameEnd - 1); if (not Fullpath) then Filename := ExtractFileName(Filename); if (AnsiLowercase(Filename) = AnsiLowercase(procName)) then Found := True; end; CloseHandle(hProcess); end; Entry := Entry + 1; end; end; Result := Found; end; function NextButtonClick(CurPage: Integer): Boolean; begin Result := True; if CurPage = 1 then begin case IsAppRunning('WorldOfTanks.exe', False) of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: Result := True; end; end; end; Тогда может это не твоё? -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
А у хомячков корч. -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
function IsAppRunning(const FileName : AnsiString): Boolean; var FSWbemLocator: Variant; FWMIService : Variant; FWbemObjectSet: Variant; begin Result := False; FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator'); FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"', [FileName])); Result := (FWbemObjectSet.Count > 0); FWbemObjectSet := Unassigned; FWMIService := Unassigned; FSWbemLocator := Unassigned; end; function InitializeSetup(): Boolean; begin case IsAppRunning('WorldOfTanks.exe') of True: begin MsgBox(ExpandConstant('{cm:IsAppRunningLabel}'), mbError, MB_OK); Result := False; end; False: begin Result := True; end; end; end; Работает с Windows 7. Что бы не вылетал с ошибкой инсталлятор на XP и Vista нужно обвернуть это в проверку версии, а лучше запретить инсталлятор запускать на системах ниже Windows 7 (сколько можно уже?). Так же можно закинуть в NextButtonClick с проверкой на любой странице (первой). Не причастные к друг другу вещи. Ищите ошибку у себя. -
Создание инсталляторов для модпаков на базе Inno Setup
AtotIK replied to EvilAlex's topic in Modding General Discussion
Скачивать XFW.ExtensionLib_2021.05.01.zip, брать в архиве файл xvmextensions.x86_32.dll, файл примера там же.