Войти

Показать полную графическую версию : Скрипты 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

Gnom_aka_Lexander
28-04-2011, 16:29
R.i.m.s.k.y., Не, не одно и то-же, мак адрес генерируется опираясь на конфу твоего железа, а Ип выдает твой провайдер.

R.i.m.s.k.y.
28-04-2011, 16:47
R.i.m.s.k.y., Не, не одно и то-же, мак адрес генерируется опираясь на конфу твоего железа, а Ип выдает твой провайдер. »
я в курсе, но почему то все упорно при вопросе дать код на айпишник дают ссылку на этот код макадреса.
айпи дает не только провайдер, есть еще и в локальной сети
мне надо в локальной сети, потому как на некоторых машиназ iputils не срабатывает - could not call proc

Gnom_aka_Lexander
28-04-2011, 17:34
R.i.m.s.k.y., локального ип на некоторых машинах может и не быть :) даже если подключение через сеть идет - я знаю парочку таких провайдеров, отсюда и ошибка.

R.i.m.s.k.y.
28-04-2011, 18:41
локального ип на некоторых машинах может и не быть даже если подключение через сеть идет - я знаю парочку таких провайдеров, отсюда и ошибка. »
не мой случай, почитай на прошлой странице я написал на кой мне это надо, айпишнник есть у всех, а ошибка у 1/3 .

Serega
28-04-2011, 20:57
вот такая ошибка »
обратил внимание - когда ставиш Flags: dontcopy, DestDir лучше вообще не указывать »
Совершенно верно, меня даже удивляет, зачем писать DestDir: {tmp}, когда ты распаковываешь сам и тем более ещё раньше чем сработает секция [Files]...
айпи дает не только провайдер, есть еще и в локальной сети »
Согласен, если только вы находитесь в локальной сети... я допустим нет, как и 70% из присутствующих здесь на форуме и локальный IP у всех по умолчанию 127.0.0.1
мне надо в локальной сети, потому как на некоторых машиназ iputils не срабатывает - could not call proc »
не знаю почему не срабатывает, по умолчанию должен выводить 127.0.0.1, но как вариант используйте try..except..end и в случае ошибки выводите 127.0.0.1
локального ип на некоторых машинах может и не быть »
неправда, смотрите выше

EvilAlex
28-04-2011, 20:59
Здравствуйте уважаемые форумчане !

Ктонибудь может дать скрипт для воспроизведения музыки в инстоляторе с кнопкой паузы и пуска ?

Зарание спасибо !

R.i.m.s.k.y.
28-04-2011, 21:40
не знаю почему не срабатывает, по умолчанию должен выводить 127.0.0.1, но как вариант используйте try..except..end и в случае ошибки выводите 127.0.0.1 »
спасибо, но поздно, скрипт уже в ГП КД, завтра будут результаты в логах, или не будут, как луна повернется ;)

R.i.m.s.k.y.
29-04-2011, 09:45
как вариант используйте try..except..end и в случае ошибки выводите 127.0.0.1 »
теже фаберже только сбоку - could not call proc
на тех кампах вин хр3, может в этом дело?

собрал свой вариант вычисления айпишника, айпиадреса, айпи, IP адреса, IPAdress, IP Adress, IPAdres, IP Adres (это были теги для поиска ;)
нужен AdapterWatch http://www.nirsoft.net/utils/awatch.html


[Files]
Source: "awatch.exe"; Flags: dontcopy noencryption nocompression

[*C*ode]
ip : string; // переменная будет доступна всем функциям в коде

Procedure GetIPAdress();
var S: TArrayOfString; i,res : Integer; st : string;
begin
ExtractTemporaryFile('awatch.exe');
Exec(ExpandConstant('{tmp}\awatch.exe'), ' /stab tab1.txt 1 ',ExpandConstant('{tmp}'),SW_HIDE,ewWaitUntilTerminated,res);
LoadStringsFromFile(ExpandConstant('{tmp}\tab1.txt'), S); // загружаем файл
for i:= 0 to GetArrayLength(S)-1 do begin
if (Pos(AnsiUpperCase('IP Addresses'), AnsiUpperCase(S[i])) > 0) then begin
st:=S[i];
break;
end;
end;
StringChangeEx(st, 'IP Addresses', '', True);
st:=TrimLeft(st);
st:=copy(st,0,Length(st)-pos('(',st)-1);
StringChangeEx(st, '(', '', True);
st:=TrimRight(st);
ip:=st;
end;
procedure InitializeWizard();
begin
GetIPAdress;
MsgBox('Your IP adress ' + ip, mbInformation, MB_OK);
.....
end;

R.i.m.s.k.y.
29-04-2011, 12:10
Ктонибудь может дать скрипт для воспроизведения музыки в инстоляторе с кнопкой паузы и пуска ? »
благородный дон уже почитал сообщения в шапке и попробовал Inno Setup GameScript Generator? и поиском успел воспользоваться? и все равно не помогло?

Serega
29-04-2011, 13:20
собрал свой вариант вычисления айпишника »
Я рад, что вы смогли решить свою проблему.

R.i.m.s.k.y.
29-04-2011, 13:29
Я рад, что вы смогли решить свою проблему. » я тоже ;)

Gnom_aka_Lexander
29-04-2011, 15:09
Serega, локальный IP у всех по умолчанию 127.0.0.1- позволю себе не согласится, это адрес хоста внутри самого компьютерра, и локальным не является, поскольку из локальной сети не виден.

Sotonisto
29-04-2011, 17:37
Всем доброго времени суток. Как обычно нужна ваша помощь :)
1. Можно ли к стандартному (не заскинованому, без музыки и пр.) инсталлятору добавить авторан, например, YURSHAT'a (скрипт NFSU)?
2. Поделитесь ссылкой на скрипт, при котором инсталл проверял установлено ли приложение. Если установлено - выдавал соответствующее сообщение и зыкрывался.
Заранее спасибо.

R.i.m.s.k.y.
29-04-2011, 18:02
2. Поделитесь ссылкой на скрипт, при котором инсталл проверял установлено ли приложение. Если установлено - выдавал соответствующее сообщение и зыкрывался.
Заранее спасибо. »


[*C*ODE]
function haaliexists(): Boolean;
Var haaliPath: string;
begin
if not IsWin64 then begin
RegQueryStringValue(HKLM, 'SOFTWARE\HaaliMkx','Install_Dir', haaliPath);
if FileExists (RemoveQuotes(haaliPath)+'\splitter.ax') then Result := True else Result := False;
end;
if IsWin64 then begin
RegQueryStringValue(HKLM, 'SOFTWARE\Wow6432Node\HaaliMkx','Install_Dir', haaliPath);
if FileExists (RemoveQuotes(haaliPath)+'\splitter.ax') then Result := True else Result := False;
end;
end;

Function InitializeSetup: Boolean;
Begin
...
if (not haaliexists) then begin
MsgBox('Проги нет! Ложки нет! Жисть не удалась!', mbInformation, MB_OK);
result:=false
end
else result:=true;
end;

murlakatamenka
29-04-2011, 18:18
2. Поделитесь ссылкой на скрипт, при котором инсталл проверял установлено ли приложение. Если установлено - выдавал соответствующее сообщение и зыкрывался.
Заранее спасибо. »
можно проверять через реестр
Можно ли в Inno Setup задать, чтобы установка начиналась только если в реестре присутствует некоторый ключ? Вот готовый скрипт.

#define DateTime GetDateTimeString('ddddd','','')

[Setup]
AppName=CheckRegValue
AppVerName=CheckRegValue and select Component
DefaultDirName={pf}\My Program OutputBaseFilename=Setup (сборка от {#DateTime})

[Tasks]
Name: eng; Description: Английская версия; Check: CheckKey
Name: rus; Description: Русская версия; Check: not CheckKey

[Коде] //заменить коде на Сode
Function CheckKey: Boolean;
Begin
if ExpandConstant('{reg:HKLM\Software\LucasArts\Star Wars Empire at War\1.0,CD Key}') = 'fc4c-3d8-05f-d411-uk20' then Result:= True
End;

Function InitializeSetup: Boolean;
Begin
If RegValueExists(HKLM, 'Software\LucasArts\Star Wars Empire at War\1.0\ExePath', ExpandConstant('{#SetupSetting("DefaultDirName")}')) then Result:= True
else MsgBox('Программа ' + '{#SetupSetting("AppName")}' + ' не установлена!', mbInformation, mb_Ok)
End;
что здесь надо Вам, догадаетесь. взято из faq ру-борда

MrAWP
30-04-2011, 18:20
up!

Помогите вытащить путь к firefox.exe из реестра (ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe , параметр Path - папка, в который лежит firefox.exe), а затем открыть через него xpi файл для установки плагина.

заранее спасибо.

Habetdin
01-05-2011, 01:33
MrAWP, вместо ссылки впишите параметры для установки xpi:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[code]
function DetectInstallRegKey: Boolean;
var
Firefox: string;
res: Integer;
begin
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe', '', Firefox) then
if Firefox <> '' then
Exec(Firefox, 'http://forum.oszone.net/index.php?referrerid=150730', '', SW_SHOW, ewWaitUntilTerminated, res);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpFinished then
DetectInstallRegKey;
end;

mariolast
01-05-2011, 05:33
Проконсультируйте если кто в курсе. При следующем раскладе

Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=true

после запуска инсталлятора происходит пауза этак минуты две. Если убираю SolidCompression, то запускается мгновенно, но размер инсталлятора существенно больше. Это как то можно поправить?

R.i.m.s.k.y.
01-05-2011, 08:10
Если убираю SolidCompression, то запускается мгновенно, но размер инсталлятора существенно больше. Это как то можно поправить? »
есть ExtractTemporaryFile в коде? попробуй эти файлы в секции Files вынести в отдельные строчки и поставь флаг solidbreak
solidbreak
When solid compression is enabled, this flag instructs the compiler to finalize the current compression stream and begin a new one before compressing the file(s) matched by Source. This allows Setup to seek to the file instantly without having to decompress any preceding files first. May be useful in a large, multi-component installation if you find too much time is being spent decompressing files belonging to components that weren't selected.

Gnom_aka_Lexander
01-05-2011, 12:18
Neutron,
procedure InitializeWizard();
begin
with WizardForm.ComponentsList do
begin
Visible := False;
end;
end;




© OSzone.net 2001-2012