Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Друзья, все пытаюсь создать простой репак и не получается(((((( Подскажите в чем косяк и что не правильно делаю:
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{B425585C-AD85-49A1-9A1A-1BABDC3F2F4F}
AppName=Terminator Salvation
AppVerName=Terminator Salvation
AppPublisher=Night Angel
DefaultDirName=E:\Games\Evolved Games\Terminator Salvation\Terminator Salvation
DefaultGroupName=Terminator Salvation
AllowNoIcons=true
OutputDir=C:\Users\SeDmY\Desktop\Новая папка
OutputBaseFilename=setup
SetupIconFile=C:\Users\SeDmY\Desktop\icon.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64
WizardImageFile=C:\Users\SeDmY\Desktop\Terminator\left.bmp
WizardSmallImageFile=E:\Games\Evolved Games\Terminator Salvation\splash_screen.bmp
[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: E:\Games\Evolved Games\Terminator Salvation\TerminatorSalvation.exe; DestDir: {app}; Flags: ignoreversion
Source: E:\Games\Evolved Games\Terminator Salvation\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\Terminator Salvation; Filename: {app}\TerminatorSalvation.exe
Name: {group}\{cm:UninstallProgram,Terminator Salvation}; Filename: {uninstallexe}
Name: {commondesktop}\Terminator Salvation; Filename: {app}\TerminatorSalvation.exe; Tasks: desktopicon
[Run]
Filename: {app}\TerminatorSalvation.exe; Description: {cm:LaunchProgram,Terminator Salvation}; Flags: nowait postinstall skipifsilent
Вылазит ошибка:
http://s41.radikal.ru/i094/1005/fd/f59dadfc2a5et.jpg (http://radikal.ru/F/s41.radikal.ru/i094/1005/fd/f59dadfc2a5e.png.html)
Prototype:
function IntToStr(i: Longint): String;
Что с этим делать?
F := ExpandConstant('{reg:HKLM32\Software\VST,VSTPluginsPath|{syswow64}\Plugins}\Trilogy\Trilogy.inf');
SetArrayLength(S, 12);
....
S[09] := 'HKLM,"Software\Classes\Trilogy","Value3",0x24001,"' + IntToStr(V3) + '"'
...
SaveStringsToFile(F, S, False);
end;
Что не так ? :(
Я не разбираюсь в типах данных делфи, вопрос был выше, я думаю мне тут надо преобразовать данные....
Но что делать с функциями...
function Chr(B: Byte): Char;
function Ord(C: Char): Byte;
function Copy(S: String; Indx, Count: Integer): String;
function Length(s: String): Longint;
function Lowercase(S: String): String;
function Uppercase(S: String): String; хоть покажите примеры? :(
А лучше мой вопрос разрешите #1839 |
S.T.R.E.L.O.K.
29-05-2010, 02:15
SeDmY, добавь что-то подобное:
[setup]
DiskSpanning=true
DiskSliceSize=666666666
где DiskSliceSize - размер файла setup-x.bin в байтах, максимальный размер 2100000000
SeDmY, добавь что-то подобное:
Код:
[setup]
DiskSpanning=true
DiskSliceSize=666666666
где DiskSliceSize - размер файла setup-x.bin в байтах, максимальный размер 2100000000 »
Так, посмотрим-с) Мысль уловил)
Программа во время компиляции выдает сообщение о сбое и выключается... блин, на том же месте практически, где выдавала ошибку(((
http://i066.radikal.ru/1005/8c/ca53b4dea86dt.jpg (http://radikal.ru/F/i066.radikal.ru/1005/8c/ca53b4dea86d.png.html)
Глюк программы в 7-ке или косяк в скрипте!?
S.T.R.E.L.O.K.
29-05-2010, 13:04
SeDmY, 7-ka 64-разрядная? если нет, то сделайте сжатие просто ultra, а не ultra64.
если всё таки 64-разрядная, всё равно попробуйте переставить на ultra, ради теста
internalCompressLevel=ultra
Compression=lzma/ultra
SeDmY, 7-ka 64-разрядная? если нет, то сделайте сжатие просто ultra, а не ultra64.
если всё таки 64-разрядная, всё равно попробуйте переставить на ultra, ради теста
internalCompressLevel=ultra
Compression=lzma/ultra »
Да, 7-ка 64-разрядная! Сейчас проверю, спс!))
МИШАНЧИК
29-05-2010, 15:58
Подскажите пожалуйста!
Как в [Components] сделать чтоб четбокс не был выбран по умолчанию?
В справке не нашёл.
Farquaad
29-05-2010, 21:02
Подскажите, pls, как изменить значение параметра в [Setup] в зависимости от выбора юзера, например
[Setup]
DefaultDirName={code:DefDest}\AppName
где
function DefDest(Param: String): String;
begin
if InstallMode then {InstallMode задается юзером в диалоге в InitializeWizard }
Result := ExpandConstant('{pf}')
else
Result := ExpandConstant('{sd}');
end;
Проблема в том, что DefDest вызывается еще до появления окна InnoSetup и соответственно до выбора юзера
или есть способ переопределить переменные Setup позже ?
Подскажите пожалуйста, можно ли сделать так:
Если в реестре ключ, скажем:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1250.nls"
то в конце инсталляциии требуется перезагрузка.
Если:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
то тогда без перезагрузки.
Если можно, то пожалуйста помогите с написанием скрипта, я очень в этом не силен.
Заранее спасибо!
Или такой вопрос, можно ли сделать чтоб инсталлятор считывал значение в реестре, например:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"10001"=""
"10002"=""
"10003"=""
"10004"=""
и запускал файл rus.reg (незаметно для пользователя во время установки)?
Если таких значений нет(или другие), соответственно не запускал бы его.
Всё это легко можно здалать знающим Паскаль в секции [соdе], только Serega, пропал кудато и занят,
а все остальные спят тут. :\
Или такой вопрос, можно ли сделать чтоб инсталлятор считывал значение в реестре »
RegQueryStringValue()
и запускал файл rus.reg »
Exec(), ShellExecute() и всякие If, Then итп. я в этом сам не орентируюсь :)
В справке почитай:
Pascal Scripting /Support Functions Reference
жаль там примеров кот наплакал. :(
R.i.m.s.k.y.
31-05-2010, 13:14
Или такой вопрос, можно ли сделать чтоб инсталлятор считывал значение в реестре, например »
[Files]
Source: Reg.reg; DestDir: {tmp}; AfterInstall: NLS
[_Code]
Procedure NLS();
Var NLS1: string; res : integer;
begin
RegQueryStringValue(HKLM, 'SYSTEM\CurrentControlSet\Control\Nls\CodePage','10001', NLS1);
if NLS1 <> 'www' then Exec('reg.exe', ' import ' + ' ' + AddQuotes(ExpandConstant('{tmp}\reg.reg')),ExpandConstant('{tmp}'),SW_HIDE, ewWaitUntilTerminated, res);
end;
Примерно так.
А по первому вопросу я без понятия, как через код сказать инно, что хорошо бы в конце ребутнуться.
жаль там примеров кот наплакал »
Зато в шапке темы примеров полно!
konder1995
31-05-2010, 15:44
люди добрые подскажите как сделать так чтоб выбраный ярлык во время инсталяции отправляло на раб стол
и как сделать нормальную деинстоляцию программы а то выдаёт ошибку что какой то файл не распознан данной версией
подправте мои скрипт
[СODE]
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{EC6A737E-3DBD-471F-B85C-D3451AB4A69A}
AppName=Tom Clancy's Rainbow Six Vegas
AppVerName=Tom Clancy's Rainbow Six Vegas
DefaultDirName={pf}\Tom Clancy's Rainbow Six Vegas
DefaultGroupName=Tom Clancy's Rainbow Six Vegas
DisableProgramGroupPage=true
OutputDir=C:\
OutputBaseFilename=setup
SetupIconFile=C:\Documents and Settings\Стас\Рабочий стол\autorun.ico
DiskSpanning=yes
SlicesPerDisk=1
DiskSliceSize=2100000000
DiskClusterSize=4096
ReserveBytes=0
Compression=lzma/normal
SolidCompression=true
UninstallDisplayIcon={app}\R6Vegas_Game(tanik).exe
UninstallDisplayName=Tom Clancy's Rainbow Six Vegas
[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
[Files]
Source: D:\Игры\Tom Clancy's Rainbow Six Vegas\Binaries\R6Vegas_Game(tanik).exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Игры\Tom Clancy's Rainbow Six Vegas\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Icons]
Name: {group}\Tom Clancy's Rainbow Six Vegas; Filename: {app}\R6Vegas_Game(tanik).exe
Name: {commondesktop}\Tom Clancy's Rainbow Six Vegas; Filename: {app}\R6Vegas_Game(tanik).exe; Tasks: desktopicon
[Run]
Filename: {app}\R6Vegas_Game(tanik).exe; Description: {cm:LaunchProgram,Tom Clancy's Rainbow Six Vegas}; Flags: nowait postinstall skipifsilent
[СODE]
ps.я чайник сильно не ругайте
R.i.m.s.k.y.
31-05-2010, 16:10
я чайник сильно не ругайте »
Это видно раз мастером делали. А вот за то что ошибку не написали - поругаем. Ласково пожурим и за портянку кода - такой код надо заключать в теги [СODE] [/СODE]
[Tasks]
Name: desktopicon; Description: Поместить ярлык на рабочий стол; GroupDescription: Дополнительные ярлыки; Flags: unchecked
Секция [Icons] нормально написана на первый взгляд, должно помещаться все. Птичкой отмечаем нужную галку при инсталляции? А то секция [Tasks] была не очень хорошо написана, на отдельной странице задач было все верно написано? А то может там и непонятно что требуется.
Я не играл в Tom Clancy's Rainbow Six Vegas, но где у него должен правильно лежать запускной экзешник? В Binaries? судя по [Files] он кладется в папку {pf}\Tom Clancy's Rainbow Six Vegas и оттуда запускается, на него и ярлыки. Не есть гуд и переименовывать запускные экзешники.
[Run]
Filename: {app}\R6Vegas_Game(tanik).exe; Description: Запустить Tom Clancy's Rainbow Six Vegas; Flags: shellexec postinstall skipifsilent
Примерно так.
А по первому вопросу я без понятия, как через код сказать инно, что хорошо бы в конце ребутнуться. »
if NLS1 <> 'www' then Exec('shutdown.exe', '-r -f -t 00...
:)
Посмотрите мой вопрос, пожалууста? http://forum.oszone.net/post-1422716-1839.html
Ато всё дело стало. Если нет решения так нет. Буду батники тогда ваять. :(
Если даже взять BINARY данные, то из реестра они в файл пишуться как квадраты,
значится надо конвертировать это перед записью в файл?
Хотяб с REG_BINARY подскажите, если уж REG_NONE действительно проблемно.
konder1995
31-05-2010, 21:37
Такой вопрос:
1)как сделать так чтоб программу можно было запускать через меню пуск?
2)как задать запуску и удаленю иконки?
Заранее спасибо.
как сделать так чтоб программу можно было запускать через меню пуск? »
Name: "{userprograms}\Miranda"; Filename: "{pf}\Miranda\Miranda.exe"; WorkingDir: "{pf}\Miranda"; IconFilename: "{pf}\Miranda\Miranda.ico"; Comment: "Miranda"
как задать запуску и удаленю иконки »
так же
R.i.m.s.k.y.
01-06-2010, 08:51
if NLS1 <> 'www' then Exec('shutdown.exe', '-r -f -t 00 »
Некрасиво. А если сетуп не успеет закончить свои делы и команда ребутнет комп? Надо грамотно - чтобы инсталлер сам предложил перегрузится.
Посмотрите мой вопрос, пожалууста »
Смотрел, все что мог сказать по этому вопросу я уже сказал. Не знаю я как инно дружит с Reg_none & Reg_Binary. Когда мне надо какой-нить экзот занести в реестр, я ключ из реестра импортирую в рег-файлик, потом через ISTool его импортирую и смотрю как он получился в коде инно, дальше уже смотрю что там есть.
А вот что пишет справка инно про типы регданных
The data type of the value. This must be one of the following:
none
string
expandsz
multisz
dword
qword
binary
If none (the default setting) is specified, Setup will create the key but not a value. In this case the ValueName and ValueData parameters are ignored.
If string is specified, Setup will create a string (REG_SZ) value.
If expandsz is specified, Setup will create an expand-string (REG_EXPAND_SZ) value.
If multisz is specified, Setup will create an multi-string (REG_MULTI_SZ) value.
If dword is specified, Setup will create a 32-bit integer (REG_DWORD) value.
If qword is specified, Setup will create a 64-bit integer (REG_QWORD) value.
If binary is specified, Setup will create a binary (REG_BINARY) value.
Reg_None нету в перечне.
Уважаемый R.i.m.s.k.y., я в скриптах просто ноль, скажите, Вы написали пример скрипта для одного значения:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"10001"=""
Я правильно понял?
А если повесить перезагрузку на файл reg.reg? Можно такое?
Увидел значение ("10001"=""), винда англ,запускается reg и по нему перезагрузка, а? Будет ли она в конце инсталляции правда?
brodovski
01-06-2010, 12:05
Всем привет!Я новичок в Inno Setup ноль(((дайте пожалуйста скрипт в котором можно например архив FreeArc разделить на 2 диска,например если у меня архив 8гб а мне нужно чтобы он был 2 по 4гб,когда например первый установится чтоб просил вставить второй диск.Помогите пожалуйста((
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.