Вопрос Смена языка игры через компоненты ( решено )

DEAD KING

Новичок
Столкнулся с проблемой, у меня язык игры меняется в реестре файла, как сделать чтоб при выборе языка в компонентах установщик, вносилась определённая реестр строка, прописаная в регистре скрипта ?

К примеру, я выбрал рус вариант, и в реестр внеслась определённая строка
И чтоб когда я выбирал английский вариант, русский вариант в реестр не вносился.
 

Andreo Fadio

Старожил
как сделать чтоб при выборе языка в компонентах установщик, вносилась определённая реестр строка, прописаная в регистре скрипта ?
Код:
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf}\MyApp
OutputDir=.

[Types]
Name: "ful"; Description: "Автоматическая"
Name: "full"; Description: "Выборочная"; Flags: iscustom

[Components]
Name: "lang"; Description: "Выберите язык игры..."; Types: full ful
Name: "lang\rus"; Description: "Русский"; Types: full ful; Flags: exclusive
Name: "lang\eng"; Description: "English"; Types: full; Flags: exclusive

[Registry]
Root: HKLM; Subkey: "Software\NameKey"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\NameKey\Paramets"; ValueName: "languages"; ValueType: String; ValueData: "rus"; Flags: uninsdeletekey; Components: lang\rus;
Root: HKLM; Subkey: "Software\NameKey\Paramets"; ValueName: "languages"; ValueType: String; ValueData: "eng"; Flags: uninsdeletekey; Components: lang\eng;
 

DEAD KING

Новичок
Код:
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf}\MyApp
OutputDir=.

[Types]
Name: "ful"; Description: "Автоматическая"
Name: "full"; Description: "Выборочная"; Flags: iscustom

[Components]
Name: "lang"; Description: "Выберите язык игры..."; Types: full ful
Name: "lang\rus"; Description: "Русский"; Types: full ful; Flags: exclusive
Name: "lang\eng"; Description: "English"; Types: full; Flags: exclusive

[Registry]
Root: HKLM; Subkey: "Software\NameKey"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\NameKey\Paramets"; ValueName: "languages"; ValueType: String; ValueData: "rus"; Flags: uninsdeletekey; Components: lang\rus;
Root: HKLM; Subkey: "Software\NameKey\Paramets"; ValueName: "languages"; ValueType: String; ValueData: "eng"; Flags: uninsdeletekey; Components: lang\eng;
Спасибо, работает.
 

DEAD KING

Новичок
Как сделать чтоб вместе с выбраным компонентом рееста, так же распакововалась архив прописаный в ISDone ?
 

Crachlow

Старожил
TmpValue:=1;
if IsComponentSelected('lang\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('land\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
..........
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rus.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\eng.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
В тестовом прогоне распакуется все, при нормальном - то что выбрал.
 
Последнее редактирование:

DEAD KING

Новичок
TmpValue:=1;
if IsComponentSelected('lang\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('land\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
..........
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rus.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\eng.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
В тестовом прогоне распакуется все, при нормальном - то что выбрал.
Столкнулся с другой проблемой, при обычной установке, я устанавливаю другой компонент, проценты завершения установки 85 либо другое, если выберу компонент с которым был прогон, то всё нормально, доходит до 100, как исправить это ?
 

Crachlow

Старожил
Ты правильно выставил 0, 0, 1, 0, 2, 0? Ты распаковываешь через unarc.dll? или unarc.exe?
 

Crachlow

Старожил
0,0 -основные файлы игры. Если основных файлов несколько архивов они все они должны быть прописаны под 0,0, т.е. if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc2.arc') и т.д. 1,0 - файлы русификации, 2,0 - англ. файлы.
 

DEAD KING

Новичок
Я так и сделал... Я прописал компоненты так: ENGt 1.0 RUSt 2.0 ENGv 3.0 RUSv 4.0

Не знаю, может в прогоне проблема, если не получится исправить, можно ли в ручную как то сделать ?
 

Crachlow

Старожил
Ты в тестовом прогоне должен закомментировать строку ; или // #define records, после прогона, когда появится файл records.inf разкоментировать и собрать уже с этим файлом.
 

Crachlow

Старожил
Я так и сделал... Я прописал компоненты так: ENGt 1.0 RUSt 2.0 ENGv 3.0 RUSv 4.0

Не знаю, может в прогоне проблема, если не получится исправить, можно ли в ручную как то сделать ?
В справке ISDone есть описание расстановки процентов в ручную.
 

DEAD KING

Новичок
В справке ISDone есть описание расстановки процентов в ручную.
Почитал я, возможно проблема из за этого, дело в том, что в игре изначально английский язык, то есть, выбор английского языка ни что не меняет, и не весит, а русский язык если выбирать, то распаковываются определённые файлы, возможно из за этого проблема ?

UPD: Проверил, да, проблема из за этого
 
Последнее редактирование:

DEAD KING

Новичок
Вопросы по поводу records, если раставляешь вручную проценты, Нади ли включать в инсталятор records? В ручном так скажем прогоне, или как это назвать, ручные проценты, так же все архивы распаковываются, или только выбранные ? Влияет ли ручное расстановление на скорость установки ? Какой лучше, автоматический или ручной ?
 

Crachlow

Старожил
Я так и сделал... Я прописал компоненты так: ENGt 1.0 RUSt 2.0 ENGv 3.0 RUSv 4.0

Не знаю, может в прогоне проблема, если не получится исправить, можно ли в ручную как то сделать ?
У тебя 4 архива а компонентов 2. Ты или объедини RUSt RUSv под 1,0, а ENGv ENGt в 2,0 или добавь компонентов "русский интерфейс" "русская озвучка", для инглишь тоже самое.
 
Сверху