PDA

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


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

OldGamer
30-04-2015, 01:42
потому что в скрипте обращаешься к несуществующему элементу
Что-то не получается разобраться... :cry:

Пожалуйста, помогите сделать))

Вот сам скрипт https://yadi.sk/d/0Ds5IKzvgLcnb

R.i.m.s.k.y.
30-04-2015, 11:14
OldGamer, запусти компиляцию и выполнение в инно по F9, и инно опдстветит тебе ошибочную строчку
так я криминала не вижу

aidynchik
30-04-2015, 12:15
aidynchik, у тебя переменные с версиями обнулены
#define VersionMajor
#define VersionMinor
#define VersionRevision
#define VersionBuild »

а разве следующая строка "#expr ParseVersion("MyApp.exe", VersionMajor, VersionMinor, VersionRevision, VersionBuild)"
не должна его разложить?

что мне вбивать в эти переменные, если устанавливаемая версия 1.0.0.5?
#define VersionMajor = 1
#define VersionMinor = 0
#define VersionRevision = 0
#define VersionBuild = 5

так?

P.S. ну вроде так работает. Причем со строкой "#expr ParseVersion("MyApp.exe", VersionMajor, VersionMinor, VersionRevision, VersionBuild)" и без нее

aidynchik
30-04-2015, 12:56
еще вопрос - вот тут посоветовали секцию RUN для запуска второго екзешника, который будет обновлять скрипты БД.
Но дело в том, что запускать его надо, только если это обновление. Если это первичная установка - то ничего делать не надо...
Как это реализовать?

есть идея - сохранять его в папку tmp и запускать оттуда в секции RUN, но опять же делать это надо не всегда. И потом как затем найти папку TMP в секции RUn?

R.i.m.s.k.y.
30-04-2015, 12:59
а разве следующая строка "#expr ParseVersion("MyApp.exe", VersionMajor, VersionMinor, VersionRevision, VersionBuild)"
не должна его разложить? »

не должна потому что компилятор ищет MyApp.exe рядом с собой или в Path и вряд ли она там лежит, а путь у тебя не прописан

OldGamer
30-04-2015, 13:14
запусти компиляцию и выполнение в инно по F9, и инно опдстветит тебе ошибочную строчку
так я криминала не вижу
Выполнил по F9 - всё тоже самое и ни на что не жалуется...

Может Visual C++ надо устанавливать отдельно (разными экзешниками) для x86 и x64 ?
(у меня в одном .exe устанавливается сразу оба x86 & x64 - https://yadi.sk/d/akr1NmFYgMCso )

---------
Проверил - установка с отдельными (vcredist_x86.exe и vcredist_x64.exe) проходит "на ура!"
Ради эксперимента было бы интересно узнать: то, что в одном экзе (по ссылке) - возможно ли выполнить без ошибок?

dracosha
30-04-2015, 16:51
OldGamer, нужно выполнить компиляцию по клавише F9, после компиляции установщик запускается в режиме debug, и не закрывая окно компилятора производишь установку, а там где происходит ошибка - компилятор ее отобразит в своем окне. Скриншот в студию :)

OldGamer
30-04-2015, 17:13
dracosha,
Спасибо, действительно нашлась ошибка:

http://i59.fastpic.ru/big/2015/0430/58/369bc7a8befc07521ec667efa4400b58.png

Dodakaedr
30-04-2015, 18:21
OldGamer, Если нужен отмеченный чекбокс, то не проще в секции [Run] напротив нужного убрать флаг unchecked?
[Run]
Filename: {src}\Redistributable\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: DirectX; StatusMsg: Обновление DirectX...
Filename: {src}\Redistributable\Redist\vcredist_x64_2010.exe; Parameters: /q; Tasks: Redist; StatusMsg: Установка Microsoft Visual С++ 2010 Redistributable (32 & 64-bit)
Description: {cm:LaunchProgram, MyProg (Part One)}; Filename: {app}\MyProg (Part One).exe; WorkingDir: {app}; Flags: nowait postinstall skipifsilent
Description: {cm:LaunchProgram, MyProg (Part Two)}; Filename: {app}\MyProg (Part Two).exe; WorkingDir: {app}; Flags: nowait postinstall skipifsilent unchecked
Description: {cm:LaunchProgram, MyProg-Options}; Filename: {app}\MyProg-Options.exe; WorkingDir: {app}; Flags: nowait postinstall skipifsilent unchecked

OldGamer
01-05-2015, 00:16
Спасибо всем за помощь! Всё работает! :rupor:

4o_kavo
01-05-2015, 17:35
Всем привет.
Нужна помощь для создания Setup файла с помощью программы Inno Setup, кто умеет обращаться с этой программой, будьте добры, отпишитесь мне в ЛС или в теме, я займу у вас не более 5 минут.

K.A.V.
01-05-2015, 17:49
А выше тема вам чем не понравилась? Скрипты Inno Setup. Помощь и советы [часть 8] (http://forum.oszone.net/thread-294838.html)

Макс_Скоробогатов@vk
01-05-2015, 21:53
Помогите, уже 3 дня голову ломаю…
Как установить скин??? У меня Inno Setup Compiler 5.5.1.ee2(u)
[Files]
Source: cybertron.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: ISSkin.dll; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external ‘LoadSkin@files:isskin.dll stdcall';

procedure UnloadSkin();
external ‘UnloadSkin@files:isskin.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile(‘cybertron.cjstyles’);
LoadSkin(ExpandConstant(‘{tmp}\cybertron.cjstyles’), »);
Result := True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;
Выдает ошибку на строке
procedure DeinitializeSetup();
собсна ошибка
Duplicate identifier «DEINITIALIZESETUP»

сколько не пробывал найти дубликат не где не чего подобного не вижу!

Nordek
02-05-2015, 11:19
Как установить скин??? »
#define A = (Defined UNICODE) ? "W" : "A"

[Files]
Source: cybertron.cjstyles; DestDir: {tmp}; Flags: dontcopy
Source: ISSkin{#A}.dll; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin{#A}.dll stdcall';

procedure UnloadSkin();
external 'UnloadSkin@files:isskin{#A}.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('cybertron.cjstyles');
LoadSkin(ExpandConstant('{tmp}\cybertron.cjstyles'), '');
Result := True;
end;

procedure DeinitializeSetup();
begin
UnloadSkin();
end;

Nordek
03-05-2015, 10:19
Как сделать зависимость инсталяции компонентов от версии системы »
Пример:
[Components]
Name: "cp"; Description: "Компонент"; MinVersion: 0,5.0; OnlyBelowVersion: 0,6.0


Далее: #1974, #1977, #1809, #1816.



MinVersion: Минимальная версия Windows, для которой вхождение будет обработано
OnlyBelowVersion: Противоположно MinVersion. Определяет минимальную версию Windows, для которой вхождение не будет обработано
4.0, - Windows 95

4.1, - Windows 98

4.9, - Windows ME

0,4.0 - Windows NT 4.0
0,4.0sp1 - Windows NT 4.0 Service Pack 1
0,4.0sp2 - Windows NT 4.0 Service Pack 2
0,4.0sp3 - Windows NT 4.0 Service Pack 3
0,4.0sp4 - Windows NT 4.0 Service Pack 4
0,4.0sp5 - Windows NT 4.0 Service Pack 5
0,4.0sp6 - Windows NT 4.0 Service Pack 6

0,5.0 - Windows 2000
0,5.0sp1 - Windows 2000 Service Pack 1
0,5.0sp2 - Windows 2000 Service Pack 2
0,5.0sp3 - Windows 2000 Service Pack 3
0,5.0sp4 - Windows 2000 Service Pack 4

0,5.01 - Windows XP/Windows XP 64-Bit Edition Version 2002 (Itanium)
0,5.01sp1 - Windows XP Service Pack 1
0,5.01sp2 - Windows XP Service Pack 2
0,5.01sp3 - Windows XP Service Pack 3
0,5.02 - Windows XP x64 Edition (AMD/EM64T)
0,5.01 - Windows XP 64-Bit Edition Version 2002 (Itanium)
0,5.02 - Windows XP 64-Bit Edition Version 2003 (Itanium)

0,6.0 - Windows Vista
0,6.0sp1 - Windows Vista Service Pack 1
0,6.0sp2 - Windows Vista Service Pack 2

0,6.1 - Windows 7
0,6.1sp1 - Windows 7 Service Pack 1

0,5.02 - Windows Server 2003
0,5.02sp1 - Windows Server 2003 Service Pack 1
0,5.02sp2 - Windows Server 2003 Service Pack 2
0,5.02 - Windows Server 2003 R2

0,6.0 - Windows Server 2008
0,6.1 - Windows Server 2008 R2

0,6.2 - Windows 8

0,6.3 - Windows 8.1

0,6.4 - Windows 10

Примечание:
В списке могут попадаться одинаковые значения, например: для Windows Vista: 0,6.0; для Windows Server 2008: 0,6.0 - это не опечатка, 0,6.0 равнозначен как для Windows Vista так для Windows Server 2008.
По этому, достаточно один раз выставить значение 0,6.0 - отработает как для Windows Vista так для Windows Server 2008.

Значения могут применяться как для MinVersion, так для OnlyBelowVersion.

Dodakaedr
03-05-2015, 12:58
MinVersion: Минимальная версия Windows, для которой вхождение будет обработано
OnlyBelowVersion: Противоположно MinVersion. Определяет минимальную версию Windows, для которой вхождение не будет обработано ....»
Для секции Code имеется такой список?

maraby
05-05-2015, 15:02
Nordek, спасибо огромное! На прошлой неделе сделала что-то такое. Не знаю, насколько изящно, но работает :)


begin
GetWindowsVersionEx(Version);

// On Windows < 6.0
if (Version.Major < 6) then begin
TypSerweraCheckListBox.ItemEnabled[IndexSerwera2008] := True;
TypSerweraCheckListBox.Checked[IndexSerwera2008] := True;

TypSerweraCheckListBox.ItemEnabled[IndexSerwera2012] := False;
TypSerweraCheckListBox.Checked[IndexSerwera2012] := False;

end

// Windows 6.0 || 6.1
else if (Version.Major = 6) and (Version.Minor >= 0)
and (Version.Minor <= 1)
then begin
TypSerweraCheckListBox.ItemEnabled[IndexSerwera2008] := True;
TypSerweraCheckListBox.Checked[IndexSerwera2008] := True;

TypSerweraCheckListBox.ItemEnabled[IndexSerwera2012] := True;
TypSerweraCheckListBox.Checked[IndexSerwera2012] := False;
end

else begin
TypSerweraCheckListBox.ItemEnabled[IndexSerwera2008] := False;
TypSerweraCheckListBox.Checked[IndexSerwera2008] := False;

TypSerweraCheckListBox.ItemEnabled[IndexSerwera2012] := True;
TypSerweraCheckListBox.Checked[IndexSerwera2012] := True;
end
end;

А есть еще один вопрос: как можно получить список инстанций MS SQL? Даже не знаю, как и что в гугле спрашивать... :(

Николай_Николаич@vk
07-05-2015, 19:40
Здравствуйте.
Как сделать так, чтобы при установке в файл (который уже есть на диске) добавлялись строчки которые указаны в инсталяторе.

Dodakaedr
07-05-2015, 20:26
Как сделать так, чтобы при установке в файл (который уже есть на диске) добавлялись строчки которые указаны в инсталяторе. »
Типа такого?
[setup]
appname=app
appvername=app 1.0
DefaultDirName={pf}\app

[files]
Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: "Changestring"; Flags: ignoreversion

[Code]
procedure Changestring;
begin
if FileExists(ExpandConstant('{app}\MYPROG.EXE')) then
RenameFile(ExpandConstant('{app}\MYPROG.EXE'), ExpandConstant('{app}\MYPROG_текст.EXE_или здесь что-то'));
end;

Николай_Николаич@vk
07-05-2015, 20:46
Типа такого?
Код:
[setup]
appname=app
appvername=app 1.0
DefaultDirName={pf}\app
[files]
Source: "MYPROG.EXE"; DestDir: "{app}"; BeforeInstall: "Changestring"; Flags: ignoreversion
[Code]
procedure Changestring;
begin
if FileExists(ExpandConstant('{app}\MYPROG.EXE')) then
RenameFile(ExpandConstant('{app}\MYPROG.EXE'), ExpandConstant('{app}\MYPROG_текст.EXE_или здесь что-то'));
end;
------- »


Нет.
К примеру в пути game/mods/01/ есть файл file.cti. При установке в папку mods/01/ установщик дописывал бы в файл file.cti пару строчек которые указываешь в скрипте.




© OSzone.net 2001-2012