PDA

Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]


Страниц : 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

SeDmY
28-05-2010, 23:00
Друзья, все пытаюсь создать простой репак и не получается(((((( Подскажите в чем косяк и что не правильно делаю:

[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)

semiono
28-05-2010, 23:57
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
29-05-2010, 02:41
SeDmY, добавь что-то подобное:
Код:
[setup]
DiskSpanning=true
DiskSliceSize=666666666
где DiskSliceSize - размер файла setup-x.bin в байтах, максимальный размер 2100000000 »

Так, посмотрим-с) Мысль уловил)

SeDmY
29-05-2010, 09:17
Программа во время компиляции выдает сообщение о сбое и выключается... блин, на том же месте практически, где выдавала ошибку(((

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
29-05-2010, 13:21
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 позже ?

mash
30-05-2010, 12:50
Подскажите пожалуйста, можно ли сделать так:
Если в реестре ключ, скажем:
[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 (незаметно для пользователя во время установки)?
Если таких значений нет(или другие), соответственно не запускал бы его.

semiono
31-05-2010, 12:31
Всё это легко можно здалать знающим Паскаль в секции [со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


Примерно так.

semiono
31-05-2010, 18:38
А по первому вопросу я без понятия, как через код сказать инно, что хорошо бы в конце ребутнуться. »

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)как задать запуску и удаленю иконки?
Заранее спасибо.

semiono
31-05-2010, 21:45
как сделать так чтоб программу можно было запускать через меню пуск? »
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 нету в перечне.

mash
01-06-2010, 10:35
Уважаемый 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