|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме 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:
(на основе модифицированного поиска по маске из шапки от Serega) и "Получение всех файлов в папке, с полными путями" Gnom_aka_Lexander-а работает так ищем сначала файлы по расширению (в данном случае .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 | |
|