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

R.i.m.s.k.y.
10-10-2011, 14:20
Rikill, и заслонять системный диск? это не есть гут

valyok666
10-10-2011, 14:55
R.i.m.s.k.y., а если нет диска D и он ставит просто на диск???

dracosha
10-10-2011, 14:58
valyok666, если нет других дисков то выбирается системный

R.i.m.s.k.y.
10-10-2011, 15:21
если есть папка D:\Games - предлагать туда, если есть C:\Games - туда, иначе - в програмфилесы

filehome
10-10-2011, 17:33
А как вот это чудо сделать виде скрипта



#define FindHandle
#define FindResult
#define Mask "F:\p2p на E\Games\Preferans\*.hlp"
#sub ProcessFoundFile
#define fn FindGetFileName(FindHandle)
CheckListBox.AddCheckBox('{#fn}', '', 0, True, True, False, True, nil);
#endsub

// где в секции [Code]

CheckListBox := TNewCheckListBox.Create(Page);
CheckListBox.Width := Page.SurfaceWidth;
CheckListBox.Height := ScaleY(97);
CheckListBox.Flat := True;
CheckListBox.Parent := Page.Surface;
#for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile

И еще такой вопрос?
В инсталляторе создаю новую страницу с TNewCheckListBox на ней. Вопрос, можно ли как-то заполнить его именами файлов из определенного каталога?

А можно пример работающего скрипта?

valyok666
10-10-2011, 18:06
filehome,сформулируй нормально что тебе надо=)экстрасенсы в отпуске :shocked:

Devils Night
10-10-2011, 18:38
Интересует вопрос:
Как сделать вот что, идёт запуск инсталятора, инсталятор проверяет наличие трёх файлов 1.exe, 2.dll, 3.ocx в папке C:\Program Files\MyProg и наличие ключа в реестре HKEY_LOCAL_MACHINE\SOFTWARE\MyProg (в этом ключе есть ещё ветки, ну это не важно, главное HKEY_LOCAL_MACHINE\SOFTWARE\MyProg), суть в том что, если инсталятор это всё обнаруживает, то продолжаются дальнейшие действия, если нет, то выводит окно с сообщением типа "не найдены необходимые компоненты", и при нажатии ОК инсталятор закрывается, возможно ли такое сделать?

Raf-9600
10-10-2011, 21:33
Devils Night, есть вот такая крутотень http://forum.ru-board.com/topic.cgi/unattended.oszone.net/topic.cgi?forum=5&topic=27438&start=638&limit=1&m=1

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

insombia
10-10-2011, 21:48
Как сделать чтобы в инсталяторе вместо воды как в WaterCtrl v2.0 был снег?

R.i.m.s.k.y.
10-10-2011, 22:20
вот у людей то проблем больше нету - снег в инсталлере :o шопятакжыл! :)

Devils Night
10-10-2011, 23:53
есть вот такая крутотень »Что-то не то.
Правда более гуманная, если не находит строчки в реестре »Нужно обязательно наличие трёх или более файлов, и наличие ключа в реестре, и не важно что там в ключе находится и какие внутри ключа ветки и другие параметроы, главное ключ и файлы, и самое главное, без наличия в системе файлов, выводилось окно с сообщением и установка в любом случае на продолжалась.


спасибо, но я не для себя, я внес предложение репакерам »Хм, я например так и делаю, использую скрипт c поста (http://www.forum.oszone.ru/post-1217528-96.html)

странное предложение мне на цэ нравится ставить »Ничего странного, и на диск [C] устанавливать например игры не лучший вариант.

и заслонять системный диск? это не есть гут »Поддерживаю.

если есть папка D:\Games - предлагать туда, если есть C:\Games - туда, иначе - в програмфилесы »А идея хорошая, было бы здорово, если б инсталятор определял наличие папки Games в корне диска, например если есть X:\Games, то собственно устанавливал туда, если нет то в C:\Program Files\Папка игры, отличное дополнение к посту (http://www.forum.oszone.ru/post-1217528-96.html).
Как сделать чтобы в инсталяторе вместо воды как в WaterCtrl v2.0 был снег? »А нафига это нужно :o, может ещё и рыбок запустить :lol:?

valyok666
11-10-2011, 00:06
Devils Night, Зимний инсталл под новый год :mrgreen:

nik1967
11-10-2011, 09:51
Интересует вопрос:
Как сделать вот что, идёт запуск инсталятора, инсталятор проверяет наличие трёх файлов 1.exe, 2.dll, 3.ocx в папке C:\Program Files\MyProg и наличие ключа в реестре HKEY_LOCAL_MACHINE\SOFTWARE\MyProg (в этом ключе есть ещё ветки, ну это не важно, главное HKEY_LOCAL_MACHINE\SOFTWARE\MyProg), суть в том что, если инсталятор это всё обнаруживает, то продолжаются дальнейшие действия, если нет, то выводит окно с сообщением типа "не найдены необходимые компоненты", и при нажатии ОК инсталятор закрывается, возможно ли такое сделать? »
[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg

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

[_Code]
function InitializeSetup: Boolean;
begin
Result:=true;
if not ((RegKeyExists(HKLM, 'SOFTWARE\MyProg'))
and (FileExists('C:\Program Files\MyProg\1.exe'))
and (FileExists('C:\Program Files\MyProg\2.dll'))
and (FileExists('C:\Program Files\MyProg\3.ocx')))
then
begin
MsgBox('Не найдены необходимые компоненты.', mbInformation, MB_OK);
Result:=false;
end;
end;
Только этот пример будет работать, если точно известно местонахождение MyProg и ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\MyProg.
Если MyProg установлено в другом месте и если используется х64 винда, нужен другой пример :)

Gnom_aka_Lexander
11-10-2011, 13:42
и если используется х64 винда, нужен другой пример »
Вовсе нет. Инно сама определит разрядность и подставит подключ в проверке, это она умеет :)

Sotonisto
11-10-2011, 14:00
Всем доброго времени суток!
Мне нужен простенький скрип (можно и с доп. dll), котрый при нажатии (не при наведении, а именно нажатии) на кнопку в обычном инсталляторе воспроизводил указаный звук (например, какой-то click.wav и пр.) и больше ничего. Как я уже говорил, хочется простой (насколько это можно) скрипт. Заранее благодарен.

nik1967
11-10-2011, 14:42
Лександер, Саша, я про C:\Program Files (х86) и просто C:\Program Files в х64 :)

Gnom_aka_Lexander
11-10-2011, 15:05
Саша, я про C:\Program Files (х86) и просто C:\Program Files в х64 »
Это инно, тоже умеет :) Хотя - идеальны вариант - сделать классически - проверять ветку реестра, брать из нее путь до папки установки, и проверять в ней наличие нужных файлов. В скрипте Юршата так и сделано.

valyok666
11-10-2011, 15:13
Sotonisto, Вот держи там пример (http://rghost.ru/25134111)

R.i.m.s.k.y.
11-10-2011, 15:17
Devils Night
Только этот пример будет работать, если точно известно местонахождение MyProg и ветки реестра HKEY_LOCAL_MACHINE\SOFTWARE\MyProg.
Если MyProg установлено в другом месте и если используется х64 винда, нужен другой пример »
там не другой пример, там проверка isWin64 и ключи реестра разные могут быть, надо смотреть конкретную прогу, ключи могут быть в 64-х разрядном разделе HKLM64, или в подразделе syswow64, см пример пониже. Но одновременно hklm64\syswow64 быть не может, это я для затравки написал


[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}\MyProg

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

[_Code]
function InitializeSetup: Boolean;
begin
Result:=true;
if not iswin64 the begin
if not ((RegKeyExists(HKLM, 'SOFTWARE\MyProg'))
and (FileExists('C:\Program Files\MyProg\1.exe'))
and (FileExists('C:\Program Files\MyProg\2.dll'))
and (FileExists('C:\Program Files\MyProg\3.ocx')))
then
begin
MsgBox('Не найдены необходимые компоненты.', mbInformation, MB_OK);
Result:=false;
end;
end; //not iswin64
if iswin64 the begin
if not ((RegKeyExists(HKLM64, 'SOFTWARE\SYSWOW64\MyProg'))
and (FileExists('C:\Program Files\MyProg\1.exe'))
and (FileExists('C:\Program Files\MyProg\2.dll'))
and (FileExists('C:\Program Files\MyProg\3.ocx')))
then
begin
MsgBox('Не найдены необходимые компоненты.', mbInformation, MB_OK);
Result:=false;
end;
end; //iswin64
end;

nik1967
11-10-2011, 16:04
Да знаю я, парни. Я про ЭТО: FileExists('C:\Program Files\MyProg\1.exe')
А если прога установлена в D:\Program Files\MyProg?
На счёт этого Саша верно писал:
Хотя - идеальны вариант - сделать классически - проверять ветку реестра, брать из нее путь до папки установки, и проверять в ней наличие нужных файлов.
брать из нее путь до папки установки
А еже ли нет пути установки?




© OSzone.net 2001-2012