Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 4]
TROY Diamond
15-12-2011, 21:55
Как в секции Files соединить: "AfterInstall: ExtLog()" и "AfterInstall: Pack('...')", как вместе поставить: ExtLog() и Pack('...')
Как в процессе установки запустить приложение, а потом автоматически его закрыть, не имеет значение из секции Run или Code?
Так как у меня не все файлы дополнительного по лежат в корневой папке, я немного переписал скрипт предложеный valyok666, под себя, и вроде всё получилось, до того момента когда завершается установка, при установке дополнительного по - выскакивает сообщение - неверно задано имя папки.
R.i.m.s.k.y.
16-12-2011, 08:11
Photon9, значит неправильно задано имя папки
проверяй пути, смотри чтобы все запускаемое было на том месте, где его ждет инсталлер
можешь использовать "читерский" флаг skipifdoesntexist - если файла нет, инно продолжит без ошибки :)
R.i.m.s.k.y.
16-12-2011, 10:21
С секцией tack я вроде разобрался, но вот на секции run скрипт стопорится матерится на Parametrs: " /Q /norestart" »
Parameters
R.i.m.s.k.y., да вот как раз здесь то и стопорюсь вроде пути правильные, а не идёт. Подозреваю что просто что то лишнее в скрипте прописал, пути к файлам выглядят так:
Fallout New Vegas-->Redist-->directx-->DXSETUP.exe
Fallout New Vegas-->Redist-->vcredist_x86.exe (это 2005)
Fallout New Vegas-->Redist-->vc2008-->vcredist_x86.exe (это 2008)
Fallout New Vegas-->Redist-->dotNetFx40_Full_x86_x64.exe
В скрипте вроде прописал соответственно, так что х.з.
R.i.m.s.k.y.
16-12-2011, 12:17
Photon9, я тоже криминала не вижу в путях, ну разве что вместо англ буквы ты написал похожую русскую, к примеру вместо c - с ;)
ты бы ошибку написал хоть, для определенности
и последнюю строчку лучше сделать так:
Check: IsWin64; Filename: {app}\Redist\dotNetFx40_Full_x86_x64.exe; WorkingDir: {app}\Redist\; Parameters: /silent; Tasks: Redist\dotNetFx40_Full_x86_x64; Flags: waituntilterminated;
Да но в таком случае скрипт валился бы при компиляции, а так при установке выдаёт сообщение - неверно задано имя папки - и код что то на 4 начинается
Хм, мде упущение моё надо писать не Redist, а Redists - попробую ещё раз скомпилить
R.i.m.s.k.y.
16-12-2011, 22:40
Photon9, не должен валится скрипт, ты ставишь фреймворк х64 без проверки разрядности винды, Check: IsWin64; добавляет такую проверку и на х86 такой фреймворк пропустится
Вобщем почти получилось, однако есть несколько но:
1. Никак немогу в свойствах ярлыка прописать параметр "Рабочая папка"
2.Почему список дополнительного софта выглядит так коряво, и когда ставлю галку на Дополнительное ПО , отмечается только директ, зато когда ставлю на С++ 2005 то ставится и на 2008
3.Непонятно ставится ли директ, просто перед установкой c++2005 (которая как ни странно вылетает с ошибкой и не выполняется) происходит длительная пауза (минуты 3) если же установка идёт в фоновом режиме то это не вариант
R.i.m.s.k.y.
17-12-2011, 21:21
Photon9, не стараешься
1. попробуй поставить кавыки в параметре WorkingDir
2. смотри в вике значение слова "иерархия", к тому же у тебя охрененный косяк - разные task под одним именем
И обрати внимание на флаг dontinheritcheck у task FrameWork4, запустишь инсталлер потыкай - увидишь чего делает, может ненадо
3. /silent - это параметр инно-инсталлеров, у МС это /Q, /quite, /passive. Поэтому и ругался vcredist2005
Хоть бы разобрался чего запускаешь, ведь он тебе явно писал "будь мужыгом, запусти с параметром /?" А ты какой то нелюбопытный :)
; Скрипт создан при помощи мастера создания скриптов.
; СМ. ДОКУМЕНТАЦИЮ ДЛЯ ИЗУЧЕНИЯ ДЕТАЛЕЙ ОТНОСИТЕЛЬНО СОЗДАНИЯ ФАЙЛОВ СКРИПТА INNO SETUP!
[Setup]
AppName=Fallout New Vegas
AppVerName=Fallout New Vegas
AppPublisher=Obsidian
AppPublisherURL=http://games.1c.ru/fallout_nv/
AppSupportURL=http://games.1c.ru/fallout_nv/
AppUpdatesURL=http://games.1c.ru/fallout_nv/
DefaultDirName={pf}\Fallout New Vegas
DefaultGroupName=Fallout New Vegas
InfoBeforeFile=C:\Users\Photon9\Desktop\Info.FalloutNV.txt
OutputDir=E:\FNV
OutputBaseFilename=setup
SetupIconFile=C:\Users\Photon9\Desktop\FalloutNV.ico
Compression=lzma/ultra
SolidCompression=true
DiskSpanning=true
DiskSliceSize=900000000
WizardImageFile=C:\Users\Photon9\Desktop\big.bmp
WizardSmallImageFile=C:\Users\Photon9\Desktop\small.bmp
InternalCompressLevel=ultra
[Languages]
Name: russian; MessagesFile: compiler:Default.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: Redist; Description: Дополнительное Программное обеспечение:;
Name: Redists\directx; Description: Обновить M$ DirectX; Flags: unchecked;
Name: Redists\vc2005; Description: "Установить M$ Visual c++ 2005 SP1"; Flags: unchecked;
Name: Redists\vc2008; Description: "Установить M$ Visual c++ 2008"; Flags: unchecked;
Name: Redists\fw4; Description: "Установить M$ Net Framework 4.0"; Flags: unchecked dontinheritcheck;
[Files]
Source: E:\Program Files\Fallout New Vegas\FalloutNVLauncher.exe; DestDir: {app}; Flags: ignoreversion
Source: E:\Program Files\Fallout New Vegas\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; ОТМЕТЬТЕ: Не используйте "Флажки: Проигнорировать версию" на любых общедоступных системных файлах
[Icons]
Name: {group}\Fallout New Vegas; Filename: {app}\FalloutNVLauncher.exe; WorkingDir: "{app}"
Name: {group}\{cm:ProgramOnTheWeb,Fallout New Vegas}; Filename: "http://games.1c.ru/fallout_nv/"
Name: {group}\{cm:UninstallProgram,Fallout New Vegas}; Filename: {uninstallexe}
Name: {commondesktop}\Fallout New Vegas; Filename: {app}\FalloutNVLauncher.exe; Tasks: desktopicon
[Run]
Filename: {app}\FalloutNVLauncher.exe; Description: {cm:LaunchProgram,Fallout New Vegas}; Flags: nowait postinstall skipifsilent
Filename: {app}\Redists\directx\DXSETUP.exe; WorkingDir: {app}\Redists\directx\; Parameters: /silent; Tasks: Redists\directx; Flags: waituntilterminated;
Filename: {app}\Redists\vcredist_x86.exe; WorkingDir: {app}\Redists\; Parameters: /Q; Tasks: Redists\vc2005; Flags: waituntilterminated;
Filename: {app}\Redists\vc2008\vcredist_x86.exe; WorkingDir: {app}\Redists\vc2008\; Parameters: /Q; Tasks: Redists\vc2008; Flags: waituntilterminated;
Filename: {app}\Redists\dotNetFx40_Full_x86_x64.exe; WorkingDir: {app}\Redists\; Parameters: /Q /passive /norestart; Tasks: Redists\fw4; Flags: waituntilterminated;
[Registry]
Root: HKLM; SubKey: SOFTWARE\Bethesda Softworks\FalloutNV; ValueType: string; ValueName: Installed Path; ValueData: {app}\; Flags: uninsdeletevalue uninsdeletekeyifempty
С кавычками попробую
Касаемо корявого вида меню сделал немного по другому, каждую софтину пихнул в отдельную папку и всё пришло в норму, тоесть меню выровнялос, и выделяется каждый пункт по отдельности, а еслм выбрать "дополнительное по" то все вместе
А вот с этими дополнительными командами я запутался несколько, сейчас скрипт подправлю
valyok666
18-12-2011, 04:52
Photon9, читай побольше справку)без неё никак
как сделать mesagebox при запуске инсталятора чтобы проверялось наличие ключа реестра и если ключ существует then "Программа уже установлена" и только кнопка ок?
чтобы без if CurPageID=wpWelcome
R.i.m.s.k.y.
18-12-2011, 17:30
salat,
Function InitializeSetup: Boolean;
Begin
If RegValueExists(HKLM, 'SubKeyName', ValueName) then MsgBox('Программа уже установлена', mbInformation, mb_Ok)
End;
kenny_danger
18-12-2011, 23:03
ув. пользователи возможно ли запихнуть картинки заместо текста в разделе компоненты
ну допусти чтоб за место
текста "Blue" из "- Style" было изображение не большого размера
http://s017.radikal.ru/i429/1112/b4/78e91b267ff3.png
kenny_danger, на сколько я знаю - нет. Но можно воссоздать вручную чекбоксы с радиобатонами и вместо надписей сунуть картинки по стандартному.
R.i.m.s.k.y.
19-12-2011, 10:03
kenny_danger, смотря на картинку а тебе не пофиг? :tongue:
Доброго времени суток!
Как сделать иконку на сервис?
Мне нужна иконка для запуска сервиса. Ручками это можно сделать легко, в свойствах иконки "Объект" надо прописать "net start имя_сервиса", но с помощью inno не получается.
Name: "{group}\Старт сервис имя_севиса"; Filename: "net start имя_севиса"
R.i.m.s.k.y.
19-12-2011, 11:00
Gugle, я бы вот так попробовал
Name: "{group}\Старт сервис имя_севиса"; Filename: "{sys}\net.exe"; Parameters: " start имя_севиса"; WorkingDir: "{sys}"
Вообшем я добился того чего хотел (почти), через библиотеку isUtlits все работает в процессе, но когда открою окно сис требований, его невозможно закрыть. Я одного немогу понять как сделать так как написано дальше. Нужно для начала на странице сис требований (только на ней) удалить все кнопки (далее , назад, отмена), и на их место поставить одну под названием например: ок, выход. Хочеться добиться результата, чтоб при нажатии на ету кнопку можно было возвратиться к процессу установки....
Вот скрипт:
[Setup] AppName=ProgressBar Demo AppVerName=ProgressBar Demo DefaultDirName={pf}\ProgressBar Demo [Languages] Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl" [Files] Source: isutils.dll; DestDir: "{tmp}"; Flags: dontcopy Source: back2.bmp; DestDir: {tmp}; Flags: dontcopy [Icons] Name: "{group}\Удалить"; IconFilename: "{app}\unins000.exe"; Filename: "{app}\unins000.exe" [Code] Function GetTotalRam: integer; external 'GetTotalRam@files:isutils.dll stdcall'; Function GetVideoName: PANSICHAR; external 'GetVideoName@files:isutils.dll stdcall'; Function GetVideoRam: integer; external 'GetVideoRam@files:isutils.dll stdcall'; Function GetProcessorName: PANSICHAR; external 'GetProcessorName@files:isutils.dll stdcall'; Function GetProcessorFreq: integer; external 'GetProcessorFreq@files:isutils.dll stdcall'; Function GetProcessorCoreCount: integer; external 'GetProcessorCoreCount@files:isutils.dll stdcall'; Function GetSoundCards: integer; external 'GetSoundCards@files:isutils.dll stdcall'; Function GetSoundCardName: PANSICHAR; external 'GetSoundCardName@files:isutils.dll stdcall'; Function GetOsName: PANSICHAR; external 'GetOsName@files:isutils.dll stdcall'; function GetOsNumber: integer; external 'GetOsNumber@files:isutils.dll stdcall'; function GetOsBit: integer; external 'GetOsBit@files:isutils.dll stdcall'; var Trebovaniya: TNewButton; Image: TBitmapImage; RequirementsLbl,ProcessorLbl, ProcessorNameLbl, VideoCardLbl, VideoCardNameLbl, SoundCardLbl, SoundCardNameLbl, RAMLbl, RAMTotalLbl, SystemLbl, SystemNameLbl: TLabel; Processor, coreCount, VideoRam, Ram, OpSystem, OpSystemBit:integer; procedure NewButton1Click(Sender: TObject); begin Processor:=2000; VideoRam:=9964; Ram:=500; OpSystem:=513; WizardForm.InnerNotebook.Hide; WizardForm.OuterNotebook.Hide; WizardForm.Bevel.Hide; ExtractTemporaryFile('back2.bmp'); Image:=TBitmapImage.Create(WizardForm); Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}')+'\back2.bmp '); Image.setbounds(0, 0, ScaleX(497), ScaleY(360)); Image.Parent:=WizardForm; Image.Stretch:=True; RequirementsLbl := TLabel.Create(WizardForm); with RequirementsLbl do begin AutoSize:=False; SetBounds(ScaleX(10), ScaleY(45), ScaleX(487), ScaleY(67)); Transparent:=True; WordWrap:=True; Alignment := taCenter; Font.Color:=$FFFFFF; Font.size:=10; Font.Style:=[fsBold]; Caption := 'Программа установки обнаружила следующие компоненты'; Parent:=WizardForm; end; //================= Начало - Процессор =================// ProcessorLbl := TLabel.Create(WizardForm); with ProcessorLbl do begin AutoSize:=False; SetBounds(ScaleX(23), ScaleY(102), ScaleX(150), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; Font.Style:=[fsBold]; Caption := 'Процессор'; Parent := WizardForm; end; ProcessorNameLbl := TLabel.Create(WizardForm); with ProcessorNameLbl do begin AutoSize:=False; SetBounds(ScaleX(170), ScaleY(102), ScaleX(300), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; // Font.Style:=[fsBold]; Caption := GetProcessorName+' @' + IntToStr(GetProcessorFreq) + ' MHz'; Parent := WizardForm; end; if (GetProcessorFreq*GetProcessorCoreCount) < Processor then begin RequirementsLbl.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям'; ProcessorNameLbl.font.color:=clred; end; //================= Конец - Процессор =================// //================= Начало - Видеоадаптер =================// VideoCardLbl := TLabel.Create(WizardForm); with VideoCardLbl do begin AutoSize:=False; SetBounds(ScaleX(23), ScaleY(127), ScaleX(150), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; Font.Style:=[fsBold]; Caption := 'Видеоадаптер'; Parent := WizardForm; end; VideoCardNameLbl := TLabel.Create(WizardForm); with VideoCardNameLbl do begin AutoSize:=False; SetBounds(ScaleX(170), ScaleY(127), ScaleX(300), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; // Font.Style:=[fsBold]; Caption := GetVideoName+' '+inttostr(GetVideoRam)+' Mb'; Parent := WizardForm; end; if GetVideoRam < VideoRam then begin RequirementsLbl.Caption:='Компоненты, выделенные красным, не удовлетворяют требованиям'; VideoCardNameLbl.font.color:=clred; end; //================= Конец - Видеоадаптер =================// //================= Начало - Звуковая карта =================// SoundCardLbl := TLabel.Create(WizardForm); with SoundCardLbl do begin AutoSize:=False; SetBounds(ScaleX(23), ScaleY(152), ScaleX(150), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; Font.Style:=[fsBold]; Caption := 'Звуковая карта'; Parent := WizardForm; end; SoundCardNameLbl := TLabel.Create(WizardForm); with SoundCardNameLbl do begin AutoSize:=False; SetBounds(ScaleX(170), ScaleY(152), ScaleX(300), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; // Font.Style:=[fsBold]; Caption := GetSoundCardName; Parent := WizardForm; end; if GetSoundCards=0 then begin RequirementsLbl.Caption:='Компоненты, выделенные красным, не удовлетворяют требованиям'; SoundCardNameLbl.font.color:=clred; SoundCardNameLbl.Caption := 'Звуковая карта отсутствует'; end; //================= Конец - Звуковая карта =================// //================= Начало - ОЗУ =================// RAMLbl := TLabel.Create(WizardForm); with RAMLbl do begin AutoSize:=False; SetBounds(ScaleX(23), ScaleY(177), ScaleX(150), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; Font.Style:=[fsBold]; Caption := 'ОЗУ'; Parent := WizardForm; end; RAMTotalLbl := TLabel.Create(WizardForm); with RAMTotalLbl do begin AutoSize:=False; SetBounds(ScaleX(170), ScaleY(177), ScaleX(300), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; //Font.Style:=[fsBold]; Caption := IntToStr(GetTotalRam + 1) + ' Mb'; Parent := WizardForm; end; if (GetTotalRam+1)<RAM then begin RequirementsLbl.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям'; RAMTotalLbl.font.color:=clred; end; //================= Конец - ОЗУ =================// //================= Начало - Операционная система =================// SystemLbl := TLabel.Create(WizardForm); with SystemLbl do begin AutoSize:=False; SetBounds(ScaleX(23), ScaleY(202), ScaleX(150), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; Font.Style:=[fsBold]; Caption := 'Система'; Parent := WizardForm; end; SystemNameLbl := TLabel.Create(WizardForm); with SystemNameLbl do begin AutoSize:=False; SetBounds(ScaleX(170), ScaleY(202), ScaleX(400), ScaleY(22)); Transparent:=True; Font.Name:= 'Arial'; Font.Size:= 9; Font.Color:=$FFFFFF; // Font.Style:=[fsBold]; Caption := GetOsName+' '+inttostr(GetOsBit)+' Bit'; Parent := WizardForm; end; if OpSystem > GetOsNumber then begin RequirementsLbl.Caption := 'Компоненты, выделенные красным, не удовлетворяют требованиям'; SystemNameLbl.font.color:=clred; end; //================= Конец - Операционная система =================// end; procedure InitializeWizard(); begin Trebovaniya := TNewButton.Create(WizardForm); with Trebovaniya do begin Parent := WizardForm.SelectDirPage; SetBounds(0, 184, 115, 25); OnClick := @NewButton1Click; Caption:='Сис Требования' end; end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.