Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Gnom_aka_Lexander
15-04-2011, 20:39
Сваял по просьбе (http://forum.oszone.net/post-1656096-1304.html), развитие темы вертикального статусбара, надеюсь понравится :) встроен ИсДоне.
LordSP, архив не битый, уже 70 человек скачало и никто не жаловался. архиватор, видимо битый у тебя :)
Переделал для игры ведьмак, приделал авторан, доработал страницу установки.Скачать (http://rghost.ru/5207832)
http://www.krinkels.ru/_fr/0/4690299.jpg
http://www.krinkels.ru/_fr/0/5605459.jpg
http://www.krinkels.ru/_fr/0/9198667.jpg
http://www.krinkels.ru/_fr/0/6200066.jpg
http://www.krinkels.ru/_fr/0/5462203.jpg
%userprofile%\Application Data\ПАПКА\ »
{userappdata}\ПАПКА
надо убрать возможность снять галочку "Запустить ПО" по оканчании установки, чтоб он это автоматом делал. »
[Run]
Filename: {app}\PROG.exe; Description: Запустить ПО; Flags: postinstall skipifsilent
чтоб он не создовал файлы деинсталяции unins000.exe unins000.dat »
[Setup]
Uninstallable=false
R.i.m.s.k.y.
15-04-2011, 21:40
И как его попросить чтоб он не создовал файлы деинсталяции unins000.exe unins000.dat »
[Setup]
Uninstallable=false
Лександер,
Архив битый,перезалей....
victor2006
15-04-2011, 23:32
Всем привет.
Подскажите, пожалуйста, какую переменную надо использовать в секции [setup], чтобы при установке было произведено копирование файлов в директорию C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\Saved Games ?
Все переменные из справки ведут или в C:\Users\ ИМЯ ПОЛЬЗОВАТЕЛЯ \Documents или в «вариации» C:\Users\ ИМЯ ПОЛЬЗОВАТЕЛЯ \AppData
Спасибо.
R.i.m.s.k.y.
16-04-2011, 11:40
Сваял по просьбе, развитие темы вертикального статусбара »
щито это? скрин можно?
C:\Users\ ИМЯ ПОЛЬЗОВАТЕЛЯ \Documents »
а если отсечь?
s:=ExpandConstant('{userdocs}');
StringChangeEx(S, '\Documents', '', True);
StringChangeEx(S, '\Мои документы', '', True);
Мой вопрос:
как расшифровать эту запись:
DefaultDirName={code:FunctionRegPath|{pf}\Vmd}
где FunctionRegPath - это имя функции, возвращающей то, что надо.
Что значит | ?
Как это вообще работает?
Ребят,помогите с прогресс баром,он неправильно отображается на всех страницах,увеличить то я его увеличил,а вот как сделать чтобы он оказался на своем месте,пожалуйста Хелп!!!
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=Output
[Code]
procedure InitializeWizard();
begin
with WizardForm do
begin
ProgressGauge.Top:=ScaleY(88);
ProgressGauge.Left:=ScaleX(0);
ProgressGauge.Width:=ScaleX(413);
ProgressGauge.Height:=ScaleY(49);
ProgressGauge.Parent:= WizardForm;
end
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageId = wpInstalling then
begin
WizardForm.ProgressGauge.Show;
end
end;
LordSP, ProgressGauge.Parent:= WizardForm.InstallingPage;
Gnom_aka_Lexander
16-04-2011, 14:27
R3Pa4eK, если ты заметил, то прогрессбар специально на визардформ вынесен был, тут в CurPageChanged нужно:
procedure CurPageChanged(CurPageID: Integer);
begin if CurPageId = wpInstalling then begin WizardForm.ProgressGauge.Show else WizardForm.ProgressGauge.Hide;
end;
end;
R3Pa4eK, Лександер, ,Спасибо ребят,а то единственную переменную не добавил, и надо же,оказывается все просто,вот только разве к ProgressGauge.Parent:= WizardForm,можно добавлять переменные страниц? ProgressGauge.Parent:= WizardForm.InstallingPage (FinishingPage,WelcomePage)???
Gnom_aka_Lexander
16-04-2011, 15:53
Parent - расположение, можно указывать вообще чего душе угодно, хоть WizardForm.WizardSmallBitmapImage :)
Третий вариант, жду предложений и пожеланий:)
The Witcher - Ведьмак (http://rghost.ru/5210746)
Лександер, Чуть не забыл,вот на примере,покажи как использовать свой шрифт в процессе установки,только отдельным независимым кодом,если можно пожалуйста :-)
Как избавиться от дописки в секции регистра [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
к любой программе дописывается _is1. А хотелось бы просто название программы.
Gnom_aka_Lexander
16-04-2011, 18:42
ivsatel, никак, эта "дописка" обязательна и пишется она не к программе, а к ИД программы, если он не указан, то используется название в качестве ИД, служит для того, чтобы если совершенно случайно будет устанавливаться программа с таким-же ИД, но другим названием, их ключи деинсталляции не перепутались. - будет дописано _is2
Лександер, А возможно ли как-то указать его? Имею в виду ID.
Gnom_aka_Lexander
16-04-2011, 19:01
ivsatel, в секции сетап:
AppID={{EE7C4A60-4568-459E-BDDB-D3100BF2BC1C} - ID игры ведьмак. очень желательно использовать оригинальный ID, потому что большинство официальных пачей ишут по нему то, что они должны пачить.
LordSP, пример (http://rghost.ru/3687005) использования внешнего шрифта
Лександер, получилось:
{EE7C4A60-4568-459E-BDDB-D3100BF2BC1C}_is1
Отключил запись в реестр инсталлятором. А возможно ли сделать те же записи только через [code] ?
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My Prog]
"Language"="1049"
"DisplayName"="My Prog"
"DisplayVersion"="1.0.0"
"DisplayIcon"="C:\\Program Files\\My Prog\\My Prog.exe"
"UninstallString"="C:\\Program Files\\My Prog\\My Prog.exe"
"URLInfoAbout"="http://"
Лександер, Спасибо!
Еще один вопросик,это посложнее: В этом скрипте как реализовать чтобы путь был взят из секции code,но при этом если нет записи о пути установки в реестре,выдывалось сообщение,что не найден путь,а также при этом проверялась версия,если ниже установленной,то выдавалось,что версия не соответствует:
[Setup]
AppName=GetDeviceInfo
AppVerName=GetDeviceInfo
DefaultDirName={code:GetInstallDir}
[Code]
Function GetInstallDir( AppID: String ): String; var dir: String; var ResultStr: String;
begin
RegQueryStringValue(HKCU, 'SOFTWARE\Matrix', 'Version', ResultStr);
ResultStr:='1.1.0'
RegQueryStringValue(HKCU, 'SOFTWARE\Matrix', 'Path', dir);
Result:= dir;
end;
function InitializeSetup(): Boolean;
begin
Result:= True;
if not RegValueExists(HKCU, 'SOFTWARE\Matrix', 'Version') then
begin
if not RegValueExists(HKCU, 'SOFTWARE\Matrix','Path') then
begin
MsgBox('Программа не найдена!', mberror, mb_ok);
Result:=False;
exit;
end
end
end;
Function GetInstallDir( AppID: String ): String; var dir: String; var ResultStr: String; begin RegQueryStringValue(HKCU, 'SOFTWARE\Matrix', 'Version', ResultStr); ResultStr:='1.1.0' RegQueryStringValue(HKCU, 'SOFTWARE\Matrix', 'Path', dir); Result:= dir; end; »
Вот тут ли можно,создать сообщение,еще можно ли сделать последовательный вывод сообщение,сначала о пути,а потом о версии,и можно одним сообщением,лучше рассмотреть 2 варианта.
Gnom_aka_Lexander
16-04-2011, 21:13
LordSP, Сборник скриптов (http://www.krinkels.ru/load/raznoe/inno_faq_v1_4/2-1-0-29) в в формате .chm от Krinkels; » в шапку лень заглянуть? там как раз есть ответ на твой вопрос, по остальным примерам в шапке тоже можно потыкать :)
Лександер, Я уже и в шапке искал и в скриптах смотрел,не нашел к сожалению.
Еще такое ты случаем не обладаешь скриптом,который корректно без ошибок заменяет стандартное окно "О программе".. у меня был один,но после выхода из инсталлятора,либо завершения его работы,слышен звук ошибки.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC