Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Devils Night
11-10-2011, 17:04
А почему нет?
Только этот пример будет работать, если точно известно местонахождение MyProg и ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\MyProg. »Да, именно так и должно быть.
R.i.m.s.k.y., ну вобще мне на X86 было нужно. Но это даже лучше.
nik1967, R.i.m.s.k.y., Спасибо вам огромное ребят :yahoo: .
А если прога установлена в D:\Program Files\MyProg? »Да всё равно где она установлена, главное чтобы находились файлы 1.exe, 2.dll, 3.ocx, хотя файлы могут быть другими и наличие пути с файлами может быть C:\WINDOWS\system32.
Хотя - идеальны вариант - сделать классически - проверять ветку реестра, брать из нее путь до папки установки »Вот это как раз и ненужно, проверка только ключа, даже если он пуст, т.е в HKEY_LOCAL_MACHINE\SOFTWARE\MyProg нет не каких параметров и дополнительных веток, самое главное только наличие HKEY_LOCAL_MACHINE\SOFTWARE\MyProg.
P.S Проверил, работает так как нужно, т.е если отсутствует хотя бы один компонент, то установка не продолжается.
В общем вопрос решён.
Dark_Delphin
11-10-2011, 17:09
Всем привет!
Подскажите можно ли привёязать скин формата msstyles?
Или только cjstyles?
Или можно переконвертить ms в cj?
Заранее спасибо.
Gnom_aka_Lexander
11-10-2011, 17:15
Или можно переконвертить ms в cj? »
Это одно и тоже. Вариантов два - либо указываешь при инициализации скина файл msstyles, либо меняеш файлу скина расширение на cjstyles.
Dark_Delphin
11-10-2011, 17:19
Из винды можно взять лбой *.msstyles?
Gnom_aka_Lexander
11-10-2011, 17:24
Да. Только не из любой винды :) Только ХР
Как сделать так чтобы файлы с флагом External тоже были связаны с прогресс-баром? То есть у меня прогресс-бар доходит до 100% и начинает потом их уже обрабатывать. Распаковка и запаковка происходит средствами Инно без взяких исданов и пр...
Dark_Delphin
11-10-2011, 17:28
Да. Только не из любой винды Только ХР
я из 7 хотел, никак нельзя?
ntrx, \
нет, тебе же русским языком сказали.
Vista-w, если очень захотеть, можно в космос улететь.
ntrx, библиотеку надо будет писать ;)
valyok666
11-10-2011, 23:03
доброго времени суток)кто подскажет какие функции при нажатии выполняет кнопка "Обзор"?просто делаю панель она скрывает кнопку решил сделать новую
Помогите пожалуйста, как заставить скрипт напечатать пустую строку, то есть чтобы при выборе ярлыков вместо этого:Добавить иконку на Рабочий стол
Добавить иконку на Панель быстрого запуска
Ассоциировать .iso файл с UltraISO
Установить ISO CD/DVD эмулятор (ISODrive)стало так:Добавить иконку на Рабочий стол
Добавить иконку на Панель быстрого запуска
Ассоциировать .iso файл с UltraISO
Установить ISO CD/DVD эмулятор (ISODrive)
filehome
12-10-2011, 03:46
Помогите пожалуйста!
Есть файл set.ini(он идет в комплект с инсталлятором) -> его содержимое
[files]
a1=название файла.exe
a2=название файла.exe
a3=название файла.exe
так до 30.
Задача нужно название всех фалов вывести в ComponentSelected + сделать чтобы можно было выбрать один или несколько файлов из списка и установить т.к неудобно постоянна изменять и собирать инсталлятор.
Спасибо за помощь!
Как это сделать не знаю.
No4noylis
12-10-2011, 09:24
valyok666, А нельзя ли для этой твоей новой кнопочки поставить выполнение такой процедуры:
procedure DirBrowsebuttonClick(Sender: TObject);
begin
WizardForm.DirBrowseButton.Click;
end;
BigBoo, это в таск-листе как я понимаю? Возможно поможет, если к этим задачам добавить GroupDescription: " " с пустым именем???
No4noylis, спасибо, помогло. Так работает:[Tasks]
Name: "desktopicon"; Description: "Добавить иконку на &Рабочий стол"; GroupDescription: " "; MinVersion: 4.1,4.0;
Name: "quicklaunchicon"; Description: "Добавить иконку на &Панель быстрого запуска"; GroupDescription: " "; MinVersion: 4.1,4.0; Flags: unchecked
Name: "associate"; Description: "&Ассоциировать .iso файл с UltraISO"; MinVersion: 4.1,4.0;
Name: "isodrive"; Description: "Установить ISO CD/DVD эмулятор (ISODrive)"; MinVersion: 4.1,4.0; Flags: unchecked
Можно ли сделать так, чтобы окно финиша установки с кнопкой "Завершить" автозакрывалось, скажем через 10с., к примеру, как в 7z SFX с помощью префикса "fm10:"?
Есть библиотка, которая зависит от установленной в системе WinPcap.exe. Winpcap копирует 4 библиотеки + устанавливает драйвер.
Мой код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program
[Files]
Source: ifList.dll; Flags: dontcopy
[*code] //тут нет звездочки
type
mas = record
num: Integer;
name: PAnsiChar;
IPv4: PAnsiChar;
IPv6: PAnsiChar;
description: PAnsiChar;
end;
function getT(): Integer;
external 'getT@files:ifList.dll stdcall';
function getV(d: Integer): mas;
external 'getV@files:ifList.dll stdcall';
PROCEDURE InitializeWizard;
BEGIN
END;
FUNCTION NextButtonClick(CurPageID: Integer): Boolean;
VAR
m: mas;
i: Byte;
BEGIN
for i := 1 to getT() do
begin
m := getV(i);
MsgBox('num= ' + IntToStr(m.num) + #13#10
+ 'name= ' + String(m.name) + #13#10
+ 'IPv4= ' + String(m.IPv4) + #13#10
+ 'IPv6= ' + String(m.IPv6) + #13#10
+ 'description= ' + String(m.description) + #13#10
, mbInformation, MB_OK);
end;
Result := True;
END;
Ничего необычного. Если winpcap установлена в системе, то установщик работает коректно, если нет, то выдает ошибку:
Runtime Error (at -1:0):
Cannot Import dll: C:\...бла...\ifList.dll
Не импортируется моя библиотека. Как можно отловить эту ошибку и при ее срабатывании запустить тихую установку winpcap?
volk1234
12-10-2011, 16:26
подскажите сейчас и уберу а потом могу зогегистрируватса под другим именем »
И получите бан. А также мое персональное внимание к Вам.
Изучите правила конференции.
valyok666
12-10-2011, 16:32
Gugle, кинь на ргхост я посмотрю
El Sanchez
12-10-2011, 18:03
Не импортируется моя библиотека »
Gugle, ваша библиотека зависит от wpcap.dll/packet.dll, которые должны находиться в месте, где система сможет их обнаружить (например, при установке wpcap они копируются в system32). При вызове функции из вашей библиотеки система не находит зависимые dll и вот так грязно выругается. Кстати, попробуйте вручную скопировать wpcap.dll/packet.dll в system32, не устанавливая wpcap, и запустить скрипт. Если все гуд, то попробуйте объявить функции так:
[Files]
Source: ifList.dll; Flags: dontcopy
Source: wpcap.dll; Flags: dontcopy
Source: packet.dll; Flags: dontcopy
[code]
function getT(): Integer;
external 'getT@files:ifList.dll,wpcap.dll stdcall loadwithalteredsearchpath';
function getV(d: Integer): mas;
external 'getV@files:ifList.dll,wpcap.dll stdcall loadwithalteredsearchpath';
Если нет, то измените функцию NextButtonClick:
[code]
Function NextButtonClick(CurPageID: Integer): Boolean;
Var
m: mas;
i: Byte;
begin
Result := True;
if CurPageID = какая-нибудь страница then
try
for i := 1 to getT() do
begin
m := getV(i);
MsgBox('num= ' + IntToStr(m.num) + #13#10
+ 'name= ' + String(m.name) + #13#10
+ 'IPv4= ' + String(m.IPv4) + #13#10
+ 'IPv6= ' + String(m.IPv6) + #13#10
+ 'description= ' + String(m.description) + #13#10
, mbInformation, MB_OK);
end;
except
тут установка wpcap
Result := False;
end;
end;
Gugle, ваша библиотека зависит от wpcap.dll/packet.dll, которые должны находиться в месте, где система сможет их обнаружить (например, при установке wpcap они копируются в system32). »
Там еще драйвер нужен, поэтому первый вариант не прокатывает. Нужна установка.
Если нет, то измените функцию NextButtonClick: »
блок:
try
//...
except
//...
end;
Не помогает. Ощущение, что до него даже не доходит выполнение скрипта.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.