|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1269 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать ispolin, читай в хелпе про флаг exclusive
[Components] Name: x86; Description: Java(TM) для x86 систем; Check: IsX86; MinVersion: 0.0,5.01; Name: x86\java6x86; Description: Java(TM) Platform SE 6 Update 35 для x86 систем; Check: IsX86; MinVersion: 0.0,5.01; Flags: exclusive Name: x86\java7x86; Description: Java(TM) Platform SE 7 Update 7 для x86 систем; Check: IsX86; MinVersion: 0.0,5.01; Flags: exclusive Name: x64; Description: Java(TM) для x64 систем; Check: IsX64; MinVersion: 0.0,5.01; Name: x64\java6x64; Description: Java(TM) Platform SE 6 Update 35 для x64 систем; Check: IsX64; MinVersion: 0.0,5.01; Flags: exclusive Name: x64\java7x64; Description: Java(TM) Platform SE 7 Update 7 для x64 систем; Check: IsX64; MinVersion: 0.0,5.01; Flags: exclusive [Files] Source: {tmp}\java6x86.exe; DestDir: {tmp}; Components: x86\java6x86; MinVersion: 0.0,5.01; Flags: deleteafterinstall Source: {tmp}\java6x64.exe; DestDir: {tmp}; Components: x64\java6x64; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit Source: {tmp}\java7x64.exe; DestDir: {tmp}; Components: x64\java7x64; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit Source: {tmp}\java7x86.exe; DestDir: {tmp}; Components: x86\java7x86; MinVersion: 0.0,5.01; Flags: deleteafterinstall [Run] Filename: {tmp}\java6x86.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 6 устанавливается...Ждите...; Components: x86\java6x86; MinVersion: 0.0,5.01 Filename: {tmp}\java6x64.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 6 устанавливается...Ждите...; Components: x64\java6x64; MinVersion: 0.0,5.01 Filename: {tmp}\java7x64.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 7 устанавливается...Ждите...; Components: x64\java7x64; MinVersion: 0.0,5.01 Filename: {tmp}\java7x86.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 7 устанавливается...Ждите...; Components: x86\java7x86; MinVersion: 0.0,5.01 |
------- Отправлено: 13:25, 29-09-2012 | #1031 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 532
|
Профиль | Отправить PM | Цитировать Здорово!
задача посложнее [Files] Source: {tmp}\DotNet.exe; DestDir: {tmp}; Components: framework; MinVersion: 0.0,5.01; Flags: deleteafterinstall [Run] Filename: {tmp}\DotNet.exe; Parameters: /S /nolang; StatusMsg: Microsoft .NET Framework устанавливается...Ждите...; Components: framework; MinVersion: 0.0,5.01 [Components] Name: framework; Description: Microsoft .NET Framework 1.1 - 4.0; Check: IsX86; MinVersion: 0.0,5.01 http://forum.oszone.net/thread-46682.html |
------- Отправлено: 13:54, 29-09-2012 | #1032 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать ispolin
a) не надо ставить фреймворки 1-3,5, длостаточно поставить оригинальный .Net frameWork 3.5SP1, в нем уже содержатся все предудыщие пропатченные до SP2 б) пиши в RUN несколько строчек с нужными экзешниками с флагом waituntilterminated, инно выполняет скрипт сверху вниз. Этот флаг и так задан неявно пока не поставишь флаг shellexec |
------- Отправлено: 14:00, 29-09-2012 | #1033 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Всем привет. Подскажите, могу ли в функции
вызывать Вернее не то что могу ли, а будет ли от такого вызова толк. Отработает ли что при установке я ткнул нужнуб галку(сработало IsTaskSelected('pintotaskbar')). Заранее спасибо. El Sanchez Вот окончательный мой код, работает и на х86 и на х64 системах, устанавливается и удаляется с таскбара корректно. Спасибо за помощь // thank for code to "El Sanchez" from forum.oszone.net procedure PinToTaskbar(Filename: String; IsPin: Boolean); var hInst: THandle; buf: array [0..255] of char; i, Res: Integer; strVerb, sVBSFile: String; objShell, colVerbs, oFile: Variant; begin if (GetWindowsVersion shr 24 < 6) or ((GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF < 1)) then Exit; // Windows 7 check if not FileExists(Filename) then Exit; if IsPin then Res := 5386 else Res := 5387; begin hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE); if hInst <> 0 then try for i := 0 to LoadString(hInst, Res, buf[0], 255)-1 do strVerb := strVerb + Buf[i]; try objShell := CreateOleObject('Shell.Application'); except ShowExceptionMessage; Exit; end; oFile := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)); colVerbs := oFile.Verbs; if IsWin64 and (Pos (ExpandConstant ('{pf64}\'), Filename) = 1) then begin sVBSFile := GenerateUniqueName (GetTempDir, 'mpc_be.vbs'); SaveStringToFile (sVBSFile, \ 'Set oShell=CreateObject("Shell.Application")' + #13 + \ 'Set oVerbs=oShell.NameSpace("' + ExtractFileDir (Filename) + '").ParseName("' + ExtractFileName (Filename) + '").Verbs' + #13 + \ 'For Each oVerb In oVerbs' + #13 + \ ' If (oVerb="' + strVerb + '") Then' + #13 + \ ' oVerb.DoIt' + #13 + \ ' Exit For' + #13 + \ ' End If' + #13 + \ 'Next' , False); exec( ExpandConstant ('{win}\Sysnative\cscript.exe'), '"' + sVBSFile + '" /B', '', SW_HIDE, ewWaitUntilTerminated, i); DeleteFile (sVBSFile); end else begin for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then begin if (IsPin and oFile.IsLink) then DeleteFile (ExpandConstant ('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName (Filename)); colVerbs.Item[i].DoIt; Break; end; end; finally FreeDLL(hInst); end; end; end; |
Последний раз редактировалось Aleksoid1978, 29-09-2012 в 14:08. Отправлено: 14:01, 29-09-2012 | #1034 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата Johny777:
такой вопрос. как сделать чтоб инсталятор обнаруживал запущенную программу и если она запущена то инсталятор выдал сообщение с предупреждением и закрылся? Цитата Nasedkin Nikita:
взято отсюда то что в первом посте. в вложении прикрутил. |
||
Последний раз редактировалось SatHan, 29-09-2012 в 19:02. Отправлено: 17:17, 29-09-2012 | #1035 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Nasedkin Nikita:
|
|
------- Отправлено: 19:48, 29-09-2012 | #1036 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать А можно ли отрезать от страницы, к примеру SelectDirPage, маленький кусок размером, к примеру 190*30? Просто мне на этом месте InnerPage нужна, SelectDirPage загораживает!!! Спасибо!
|
Отправлено: 20:22, 29-09-2012 | #1037 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Цитата SatHan:
ну да ладно Цитата SatHan:
работает так ищем сначала файлы по расширению (в данном случае .exe) используя имена файлов добавляем эти самые имена в цикле в чеклистбокс состоящий из одних чекбоксов имя файла = имя чекбокса тут же это имя файла и путь пишется в статичный массив записей длиной в 201 элемент (извиняй. Здесь подошёл бы лучше динамичный, но я только начал знакомится с массивами) те у нас например снаружи 10 экзешников(апдейтов) = 10 чекбоксов = 10 записей в массиве(в массиве с полными путями) ну и на этапе утановки каком хочешь мы в зависимости от отмеченного чекбокса(-ов) запускаем тот или иной экзешник код: Цитата SatHan:
оба кода возвращают булев значение попробуй ка сам на основе этого сообщения с кодом и функций из шапки сделать себе пример http://forum.oszone.net/post-1996300-1067.html |
|||
Последний раз редактировалось Johny777, 30-09-2012 в 03:26. Отправлено: 01:26, 30-09-2012 | #1038 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата Johny777:
на большее мозгов не хватает.это по крайне мере лучший вариант не устраивает ISTask.dll. хотелось бы без него обойтись еси можна. |
|
Отправлено: 07:19, 30-09-2012 | #1039 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата SatHan:
const TH32CS_SNAPPROCESS = $2; INVALID_HANDLE_VALUE = -1; 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'; 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'; function CloseHandle(hObject: THandle): Boolean; external 'CloseHandle@kernel32.dll stdcall'; function IsProcessRunning(FileName: String): Boolean; var hProcessSnap: THandle; pe32: TPROCESSENTRY32; szExeFile: String; begin hProcessSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if hProcessSnap = INVALID_HANDLE_VALUE then Exit; pe32.dwSize := sizeof(pe32); if not Process32First(hProcessSnap, pe32) then Exit; while not Result and Process32Next(hProcessSnap, pe32) do begin szExeFile := ''; while not (pe32.szExeFile[Length(szExeFile)] = #0) do szExeFile := szExeFile + pe32.szExeFile[Length(szExeFile)]; Result := LowerCase(FileName) = LowerCase(szExeFile); end; CloseHandle(hProcessSnap); end; function InitializeSetup(): Boolean; begin If IsProcessRunning('notepad.exe') then begin MsgBox('блокнот запущен. пожалуйста закройте блокнот и запустите установку заново.', mbInformation, MB_OK); Exit; end; Result:=True; end; |
|
------- Отправлено: 08:07, 30-09-2012 | #1040 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|