|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1270 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 20:34, 18-07-2012 | #441 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 38
|
Профиль | Отправить PM | Цитировать А окно при деинсталяции как можно скрыть ?
|
Отправлено: 21:32, 18-07-2012 | #442 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 21:45, 18-07-2012 | #443 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Возможно ли как-то изменить окно выбора папки установки? Если да, поделитесь, пожалуйста, примером.
|
Отправлено: 05:36, 19-07-2012 | #444 |
Ветеран Сообщения: 717
|
Профиль | Отправить PM | Цитировать [q=El Sanchez]определение рабочей папки процесса:
« скрыть Код: #ifdef UNICODE #define A "W" #else #define A "A" #endif const TH32CS_SNAPPROCESS = $2; INVALID_HANDLE_VALUE = -1; PROCESS_QUERY_INFORMATION = $400; PROCESS_VM_READ = $10; MAX_PATH = 260; type TPROCESSENTRY32 = record dwSize, cntUsage, th32ProcessID: DWORD; th32DefaultHeapID: Longint; th32ModuleID, cntThreads, th32ParentProcessID: DWORD; pcPriClassBase: Longint; dwFlags: DWORD; szExeFile: array [0..259] of char; end; function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle; external 'CreateToolhelp32Snapshot@kernel32.dll stdcall'; #ifdef UNICODE function Process32First(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32First{#A}@kernel32.dll stdcall'; function Process32Next(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32Next{#A}@kernel32.dll stdcall'; #else function Process32First(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32First@kernel32.dll stdcall'; function Process32Next(hSnapshot: THandle; var lppe: TPROCESSENTRY32): Boolean; external 'Process32Next@kernel32.dll stdcall'; #endif function CloseHandle(hObject: THandle): BOOL; external 'CloseHandle@kernel32.dll stdcall'; function GetModuleFileNameEx(hProcess: THandle; hModule: Longint; var lpFilename: Char; nSize: DWORD): DWORD; external 'GetModuleFileNameEx{#A}@psapi.dll stdcall'; function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwProcessId: DWORD): THandle; external 'OpenProcess@kernel32.dll stdcall'; function GetProcessWorkingDirectory(ProcessName: String): TArrayOfString; var hProcessSnap, hProc: THandle; pe32: TPROCESSENTRY32; szExeFile: array [0..MAX_PATH-1] of Char; szProcName: String; i, iLen: Integer; begin SetArrayLength(Result, 0); hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if hProcessSnap = INVALID_HANDLE_VALUE then Exit; pe32.dwSize := sizeof(pe32); if not Process32First(hProcessSnap, pe32) then Exit; while Process32Next(hProcessSnap, pe32) do begin szProcName := ''; while not (pe32.szExeFile[Length(szProcName)] = #0) do szProcName := szProcName + pe32.szExeFile[Length(szProcName)]; if CompareText(szProcName, ProcessName) = 0 then begin hProc := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, pe32.th32ProcessID); iLen := GetModuleFileNameEx(hProc, 0, szExeFile[0], MAX_PATH); if iLen > 0 then begin SetArrayLength(Result, GetArrayLength(Result)+1); for i := 0 to iLen-1 do Result[GetArrayLength(Result)-1] := Result[GetArrayLength(Result)-1] + szExeFile[i]; Result[GetArrayLength(Result)-1] := RemoveBackSlash(ExtractFilePath(Result[GetArrayLength(Result)-1])); end; CloseHandle(hProc); end; end; CloseHandle(hProcessSnap); end; procedure InitializeWizard(); var szArray: TArrayOfString; i: Integer; begin //хочу знать откуда калькуляторы запущены szArray := GetProcessWorkingDirectory('calc.exe'); if GetArrayLength(szArray) > 0 then for i := 0 to GetArrayLength(szArray)-1 do MsgBox(szArray[i], mbInformation, MB_OK); end; ArchiCAD.exe 32-битный видится, 64-битный такой же процесс. нет. Может кто поправить? |
Отправлено: 09:54, 19-07-2012 | #445 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Johny777:
|
|
------- Отправлено: 10:44, 19-07-2012 | #446 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Gnom_aka_Lexander,
можно так (спасибо El Sanchez-у) тихое удаление (с месседжбоксом "Да Нет" вначале и в конце (удаление завершено Ок)): полностью тихое удаление: ======================================================================= Цитата t16bz:
отличия: у меня по определённым причинам новая папка имеет название New Folder здесь вернул константу изменил координаты расположения окна (у меня окно инсталла больше стандартного и поэтому координаты другие) |
|
Последний раз редактировалось Johny777, 19-07-2012 в 16:04. Отправлено: 11:44, 19-07-2012 | #447 |
Забанен Сообщения: 31
|
Привет.
Может кто подскажет,возможно ли как то сделать чтоб при нажатии например на кнопку Button появлялась форма? На примере этого поста http://forum.oszone.net/post-1954373-453.html, только не выкатывалась а появлялась, ну в общем почти как контекстное меню. [Setup] AppName=My Program AppVerName=My Program v 1.5 DefaultDirName={pf}\My Program DefaultGroupName=My Program OutputDir=. [Icons] Name: "{commondesktop}\Моя программа"; Filename: "{app}\MyProg.exe" [*Code] var Button: TNewButton; procedure RedesignWizardForm; begin Button := TNewButton.Create(WizardForm); with Button do begin Name := 'Button'; Parent := WizardForm.SelectProgramGroupPage; Left := ScaleX(342); Top := ScaleY(104); Width := ScaleX(75); Height := ScaleY(25); end; Button.TabOrder := 5; end; procedure InitializeWizard(); begin RedesignWizardForm; end; |
Отправлено: 21:13, 19-07-2012 | #448 |
Забанен Сообщения: 31
|
Где посмотреть? Тихое удаление не нужно. Причём тут тихое удаление?
Надо чтоб например рядом с кнопкой [Обзор] была такая кнопочка со стрелочкой при нажатии на которую выпадала форма как контекстное меню. Только чтоб находилась рядом с кнопкой (под кнопкой), чтоб нельзя было двигать и не было крестика закрыть. Кликнул - Открылась, кликнул ещё раз или на основную форму или даже на рабочем столе, то она сама закрылась. Почти так [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application OutputDir=. [Languages] Name: "default"; MessagesFile: "compiler:Default.isl" [Icons] Name: "{group}\My Application"; Filename: "{app}\MyProg.exe" [*Code] var Button: TNewButton; procedure Button1Click(Sender: TObject); forward; function CreateForm: Integer; begin with CreateCustomForm do begin ClientWidth := ScaleX(256); ClientHeight := ScaleY(256); Position := poScreenCenter; ShowModal; Free; end; end; procedure Button1Click(Sender: TObject); begin CreateForm; end; procedure RedesignWizardForm; begin with WizardForm.DirBrowseButton do begin Left := ScaleX(310); end; with WizardForm.DirEdit do begin Width := ScaleX(300); end; Button := TNewButton.Create(WizardForm); with Button do begin Name := 'Button'; Parent := WizardForm.SelectDirPage; Left := ScaleX(384); Top := ScaleY(67); Width := ScaleX(27); Height := ScaleY(23); Caption := '..'; OnClick := @Button1Click; end; end; procedure InitializeWizard(); begin RedesignWizardForm; end; Даже не знаю как объяснить. |
Отправлено: 03:14, 20-07-2012 | #449 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать L1nk3R, ну ты чувак спросил
Цитата L1nk3R:
Цитата L1nk3R:
теперь я начал понимать... ты ведь типа такого хочешь (контекстное меню = PopUp Menu выпадает из кнопки)? пример: и убери пожалуйста оба своих кода дополнительно под спойлер в [more] твой код [/more] |
||
Последний раз редактировалось Johny777, 20-07-2012 в 12:09. Отправлено: 12:01, 20-07-2012 | #450 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|