PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 [174] 175 176 177 178 179 180 181 182 183 184 185 186 187 188

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
Да. Только не из любой винды :) Только ХР

Megalol
11-10-2011, 17:25
Как сделать так чтобы файлы с флагом External тоже были связаны с прогресс-баром? То есть у меня прогресс-бар доходит до 100% и начинает потом их уже обрабатывать. Распаковка и запаковка происходит средствами Инно без взяких исданов и пр...

Dark_Delphin
11-10-2011, 17:28
Да. Только не из любой винды Только ХР
я из 7 хотел, никак нельзя?

Vista-w
11-10-2011, 18:18
ntrx, \
нет, тебе же русским языком сказали.

Rikill
11-10-2011, 21:48
Vista-w, если очень захотеть, можно в космос улететь.
ntrx, библиотеку надо будет писать ;)

valyok666
11-10-2011, 23:03
доброго времени суток)кто подскажет какие функции при нажатии выполняет кнопка "Обзор"?просто делаю панель она скрывает кнопку решил сделать новую

BigBoo
12-10-2011, 00:40
Помогите пожалуйста, как заставить скрипт напечатать пустую строку, то есть чтобы при выборе ярлыков вместо этого:Добавить иконку на Рабочий стол
Добавить иконку на Панель быстрого запуска
Ассоциировать .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: " " с пустым именем???

BigBoo
12-10-2011, 10:33
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

BigBoo
12-10-2011, 12:57
Можно ли сделать так, чтобы окно финиша установки с кнопкой "Завершить" автозакрывалось, скажем через 10с., к примеру, как в 7z SFX с помощью префикса "fm10:"?

Gugle
12-10-2011, 16:22
Есть библиотка, которая зависит от установленной в системе 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
13-10-2011, 11:02
Gugle, ваша библиотека зависит от wpcap.dll/packet.dll, которые должны находиться в месте, где система сможет их обнаружить (например, при установке wpcap они копируются в system32). »
Там еще драйвер нужен, поэтому первый вариант не прокатывает. Нужна установка.
Если нет, то измените функцию NextButtonClick: »
блок:
try
//...
except
//...
end;

Не помогает. Ощущение, что до него даже не доходит выполнение скрипта.




© OSzone.net 2001-2012