|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1270 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
Отправлено: 16:09, 04-04-2018 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
Цитата DA-Bro:
Константа появилась с версии 6.1.0 (читать). До этого она была {fonts}. Как правильно устанавливать шрифты - читать. |
||
Отправлено: 16:37, 24-08-2024 | #1091 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Flix, ну да, пробовал в версии Inno Setup 6.0.5, там же в справке и смотрел.
Тут всё теперь понятно. Так в моём случае получается {commonfonts} и {fonts} одно и тоже? Или как. |
Отправлено: 17:14, 24-08-2024 | #1092 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
Если используете версию Inno ниже 6.1.0, то указываете {fonts}. Если выше 6.1.0 - то {commonfonts}, но с учетом 10 версии винды и выше, а также привилегий, могут быть варианты с {userfonts} и {autofonts}. Если не имеете понятия про версию винды и права пользователя, то рекомендуется использовать константу {autofonts}. |
|
Отправлено: 18:01, 24-08-2024 | #1093 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
я думал это редирект а оказалось это просто отдельный раздел для 64биток. Я также исследовал редиректы внутренние, но это не помогло. А также я выяснил что не может читать только с HKEY_LOCAL_MACHINE, а вот с HKEY_CURRENT_USER без проблем читает. Поэтому я решил пойти другим путем и определить путь игры через Steam. Вышло даже лучше чем я хотел - я определяю еще и диск (ведь игру можно в либе переместить на другой том)
получилось очень даже хорошо и мой динамический установщик кайфово отпрабатывает и готов к любым обновлениям версий и тому что там разработчик может изменить. Т.е. мой Inno Setup проверяет только наличие стима и флага что игра установлена (так как всё это для одной игры требуется), а вот путь где установлено, построение конфигов и всё остальное я чекаю через скрипты |
|
Отправлено: 22:41, 04-09-2024 | #1094 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать дал мен когда то человек отличный скрипт, я его подредактировал немножко - и восторгу моему не было предела. вот спустя годы возникла нужда в написании .exe. достал я значит заготовку, и смастерил инсталлятор. запускаю, а картинка в форме не на весь экран
фото
фото
в дополнение: нужно решить еще две проблемы, чтобы довести скрипт до ума. 1.) найти способ перетаскивать форму при (BorderStyle:=bsNone). код
[Setup]
AppName=Test AppVerName=Test OutputBaseFilename=Test OutputDir=userdocs:..\desktop CreateAppDir=no Uninstallable=no [code] procedure InitializeWizard(); var ClientWidth: Integer; ClientHeight: Integer; begin ClientWidth := WizardForm.ClientWidth; ClientHeight := WizardForm.ClientHeight; WizardForm.BorderStyle := bsNone; WizardForm.ClientWidth := ClientWidth; WizardForm.ClientHeight := ClientHeight; end; фото
вторую неделю уже колдую, и все ни как . в принципе жить можно, но вот перетащить форму очень бы хотелось. |
Последний раз редактировалось Beavimo, 09-10-2024 в 03:11. Отправлено: 01:38, 09-10-2024 | #1095 |
Ветеран Сообщения: 1270
|
Профиль | Отправить PM | Цитировать Цитата Beavimo:
Скрытый текст
[Files] #ifndef IS_ENHANCED #if VER < 0x06000000 ; https://web.archive.org/web/20150510131335if_/http://restools.hanzify.org/inno/callbackctrl/InnoCallbackCtrl_V1.1.zip Source: CallbackCtrl.dll; Flags: dontcopy #endif #endif [Code] const WH_KEYBOARD = 2; VK_LBUTTON = $0001; WM_SETCURSOR = $0020; WM_LBUTTONDOWN = $0201; HTCLIENT = 1; SWP_NOSIZE = 1; SWP_NOZORDER = 4; SWP_NOOWNERZORDER = $0200; // CallbackCtrl.dll Functions #ifndef IS_ENHANCED #if VER < 0x06000000 type TKeyboardProc = function(nCode: Integer; wParam: UINT_PTR; lParam: INT_PTR): Longint; TSubclassProc = function(hWnd: HWND; uMsg: UINT; wParam: UINT_PTR; lParam: INT_PTR; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): INT_PTR; function WrapKeyboardProc(Callback: TKeyboardProc; ParamCount: Integer): LongWord; external 'wrapcallbackaddr@files:callbackctrl.dll stdcall'; function WrapSubclassProc(Callback: TSubclassProc; ParamCount: Integer): LongWord; external 'wrapcallbackaddr@files:callbackctrl.dll stdcall'; #endif #endif // Process and Thread Functions function GetCurrentThreadId(): DWORD; external 'GetCurrentThreadId@kernel32.dll stdcall'; // Hook Functions function CallNextHookEx(hhk: THandle; nCode: Integer; wParam: UINT_PTR; lParam: INT_PTR): INT_PTR; external 'CallNextHookEx@user32.dll stdcall'; function SetWindowsHookEx(idHook: Integer; lpfn: LongWord; hmod: THandle; dwThreadId: DWORD): THandle; external 'SetWindowsHookExW@user32.dll stdcall'; function UnhookWindowsHookEx(hhk: THandle): BOOL; external 'UnhookWindowsHookEx@user32.dll stdcall'; // Shell Functions function SetWindowSubclass(hWnd: HWND; pfnSubclass: LongWord; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): BOOL; external 'SetWindowSubclass@comctl32.dll stdcall'; function RemoveWindowSubclass(hWnd: HWND; pfnSubclass: LongWord; uIdSubclass: UINT_PTR): BOOL; external 'RemoveWindowSubclass@comctl32.dll stdcall'; function DefSubclassProc(hWnd: HWND; uMsg: UINT; wParam: UINT_PTR; lParam: INT_PTR): INT_PTR; external 'DefSubclassProc@comctl32.dll stdcall'; // Cursor Functions function GetCursorPos(out lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall'; // Window Functions function GetWindowRect(hWnd: HWND; out lpRect: TRect): BOOL; external 'GetWindowRect@user32.dll stdcall'; function SetWindowPos(hWnd, hWndInsertAfter: HWND; X, Y, cx, cy: Integer; uFlags: UINT): BOOL; external 'SetWindowPos@user32.dll stdcall'; // Keyboard Input Functions function GetAsyncKeyState(vKey: Integer): SmallInt; external 'GetAsyncKeyState@user32.dll stdcall'; // Rectangle Functions function OffsetRect(var lprc: TRect; dx, dy: Integer): BOOL; external 'OffsetRect@user32.dll stdcall'; var HHookProc: THandle; PKeyboardProc: LongWord; PWndProc: LongWord; function WndProc(hWnd: HWND; uMsg: UINT; wParam: UINT_PTR; lParam: INT_PTR; uIdSubclass: UINT_PTR; dwRefData: DWORD_PTR): INT_PTR; var LWindowRect: TRect; LSavePt, LCurPt: TPoint; begin case uMsg of WM_SETCURSOR: begin Result := DefSubclassProc(hWnd, uMsg, wParam, lParam); if (lParam shr $10 = WM_LBUTTONDOWN) and (lParam and $FFFF = HTCLIENT) then begin GetWindowRect(hWnd, LWindowRect); GetCursorPos(LSavePt); while (GetAsyncKeyState(VK_LBUTTON) <> 0) do begin GetCursorPos(LCurPt); OffsetRect(LWindowRect, LCurPt.x - LSavePt.x, LCurPt.y - LSavePt.y); SetWindowPos(hWnd, 0, LWindowRect.Left, LWindowRect.Top, 0, 0, SWP_NOOWNERZORDER or SWP_NOSIZE or SWP_NOZORDER); LSavePt := LCurPt; end; end; end; else Result := DefSubclassProc(hWnd, uMsg, wParam, lParam); end; end; procedure SubclassWizardForm(const ARemove: Boolean); begin if PWndProc = 0 then #ifdef IS_ENHANCED PWndProc := CallbackAddr('WndProc'); #elif VER >= 0x06000000 PWndProc := CreateCallback(@WndProc); #else PWndProc := WrapSubclassProc(@WndProc, 6); #endif if not ARemove then SetWindowSubclass(WizardForm.Handle, PWndProc, 0, 0) else if PWndProc <> 0 then RemoveWindowSubclass(WizardForm.Handle, PWndProc, 0); end; function KeyboardProc(nCode: Integer; wParam: UINT_PTR; lParam: INT_PTR): Longint; begin if nCode < 0 then Result := CallNextHookEx(HHookProc, nCode, wParam, lParam) else Result := 1; end; procedure SetHook(); begin if PKeyboardProc = 0 then #ifdef IS_ENHANCED PKeyboardProc := CallbackAddr('KeyboardProc'); #elif VER >= 0x06000000 PKeyboardProc := CreateCallback(@KeyboardProc); #else PKeyboardProc := WrapKeyboardProc(@KeyboardProc, 3); #endif HHookProc := SetWindowsHookEx(WH_KEYBOARD, PKeyboardProc, 0, GetCurrentThreadId()); end; procedure UnHook(); begin if HHookProc > 0 then UnhookWindowsHookEx(HHookProc); end; procedure InitializeWizard; begin WizardForm.BorderStyle := bsNone; SetHook(); SubclassWizardForm(False); end; procedure DeinitializeSetup(); begin SubclassWizardForm(True); UnHook(); end; |
|
Отправлено: 13:23, 16-10-2024 | #1096 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать El Sanchez, дружище только увидел твой пост - думал это невозможно Я перелопатил весь интернет в поисках решения, но так ничего и не нашел, а тут такое Наконец осуществилась моя мечта, иметь на борту достойный инсталлятор. СПАСИБИЩЕ ТЕБЕ БОЛЬШОЕ!!! |
Последний раз редактировалось Beavimo, Вчера в 19:19. Отправлено: 16:19, Вчера | #1097 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты 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 |
|