Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
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:
Интересует вопрос:
Как сделать вот что, идёт запуск инсталятора, инсталятор проверяет наличие трёх файлов 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 и пр.) и больше ничего. Как я уже говорил, хочется простой (насколько это можно) скрипт. Заранее благодарен.
Лександер, Саша, я про 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;
Да знаю я, парни. Я про ЭТО: FileExists('C:\Program Files\MyProg\1.exe')
А если прога установлена в D:\Program Files\MyProg?
На счёт этого Саша верно писал:
Хотя - идеальны вариант - сделать классически - проверять ветку реестра, брать из нее путь до папки установки, и проверять в ней наличие нужных файлов.
брать из нее путь до папки установки
А еже ли нет пути установки?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC