Скрипты Inno Setup. Помощь и советы [часть 5]

Ответить
 • Просмотры: 27
Аватара пользователя
Dima2009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Dima2009 »

Цитата R.i.m.s.k.y.:



Можно ли как-то обойти окно выбора языка при старте установщика, задав "насильно" устанавливаемый язык?
Скрипты Inno Setup. Помощь и советы [часть 5]





Цитата R.i.m.s.k.y.:



Можно как-то "обощить" инсталлер на множество нерусских языков? если система русская - инсталлер выбирал русский язык (что собственно в секции Setup и указано), но если ОС любая кроме русской (китайская, корейская, бразильская etc) - то принудительно выбирался английский язык? естественно без окна выбора языка
Скрипты Inno Setup. Помощь и советы [часть 5]




Вариант первый:



Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[_Code]
type
LCID = LongInt;
function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';
procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel1 do begin
if GetSystemDefaultLCID = 1049 then WizardForm.WelcomeLabel1.Caption:= 'По умолчанию' else WizardForm.WelcomeLabel1.Caption:= 'On Default';
end;
end;

Вариант второй:



Код:

Код: Выделить всё

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
[Files]
Source: "compiler:Languages\Russian.isl"; DestDir: {tmp}; Flags: dontcopy;
Source: "compiler:Languages\English.isl"; DestDir: {tmp}; Flags: dontcopy
[_Code]
type
LCID = LongInt;
var
LangFile: String;
function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';
function InitializeSetup:boolean;
begin
  if not FileExists(ExpandConstant('{tmp}\Russian.isl')) then ExtractTemporaryFile('Russian.isl');
  if not FileExists(ExpandConstant('{tmp}\English.isl')) then ExtractTemporaryFile('English.isl');
  Result:=True;
end;
procedure InitializeWizard();
begin
with WizardForm.WelcomeLabel1 do begin
if GetSystemDefaultLCID = 1049 then begin
LangFile:= ExpandConstant('{tmp}\Russian.isl');
WizardForm.WelcomeLabel1.Caption:= GetIniString('Messages', 'WelcomeLabel1', '', LangFile)
end else begin
LangFile:= ExpandConstant('{tmp}\English.isl');
WizardForm.WelcomeLabel1.Caption:= GetIniString('Messages', 'WelcomeLabel1', '', LangFile);
end;
end;
end;

P.S. Во втором варианте нужно создать INI-Файл, так как лейблы с ISL-Файла отображаются коряво (это так, для примера).
Аватара пользователя
Johny777

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Johny777 »

Respin, так веселее, я думаю - зачем лишний раз обращаться к одному и томуже. если все надписи делать таким образом, то придется кучу времени потратить на оптимизацию, поэтому начинать нужно сразу.


читать дальше »




Код:

Код: Выделить всё

var
LangFile: String;
function GetSystemDefaultLCID() : LCID; external 'GetSystemDefaultLCID@kernel32.dll stdcall';
function InitializeSetup:boolean;
var
  lngF : String;
begin
  if GetSystemDefaultLCID = 1049 then
    lngF := 'Russian.isl';
   else
    lngF := 'English.isl';
  LangFile:= ExpandConstant('{tmp}\'+lngF);
  if not FileExists(LangFile) then ExtractTemporaryFile(lngF);
  Result:=True;
end;
procedure InitializeWizard();
begin
  with WizardForm do 
  begin
    WelcomeLabel1.Caption:= GetIniString('Messages', 'WelcomeLabel1', '', LangFile); // и так для каждого статика и лейбела инсталла
    WelcomeLabel2.Caption:= GetIniString('Messages', 'WelcomeLabel2', '', LangFile); // и так для каждого статика и лейбела инсталла
  end;
end;
Аватара пользователя
Ivan_009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Ivan_009 »

Цитата Gnom_aka_Lexander:



зачем лишний раз обращаться к одному и томуже. если все надписи делать таким образом, то придется кучу времени потратить на оптимизацию, поэтому начинать нужно сразу.
Скрипты Inno Setup. Помощь и советы [часть 5]




Там уже у кого на сколько фантазии хватит. Вот только он будет читать c ISL-Файла: "Вас приветствует Мастер установки [name]"

"Программа установит [name/ver] на Ваш компьютер"...



Вообщем кто как хочет, пусть так и делает. Главное суть вопроса.
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение R.i.m.s.k.y. »

Respin, да при чем тут фантазия? Запусти свой вариант с прописью для каждой надписи и просмотри на скорость его выполнения. в любом случае, единственный правильный вариант -
Скрипты Inno Setup. Помощь и советы [часть 5]
. Любой другой способ ведет к потерям производительности и к совершенно ненужным телодвижениям - зачем писать километр кода, который будет отнимать процессорное время для того, что и так делается самим инсталлом, при указании ему пары параметров?
Аватара пользователя
Dima2009

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Dima2009 »

R.i.m.s.k.y., Johny777 - Спасибо вам за помощь!



А реально написать код деинсталлятора как у NSIS
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
Nasedkin Nikita

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Nasedkin Nikita »

Люди!!! Подскажите, пожайлуста как создать такой инсталятор Изображение
Аватара пользователя
Nasedkin Nikita

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение Nasedkin Nikita »

Цитата R.i.m.s.k.y.:



Можно как-то "обощить" инсталлер на множество нерусских языков? если система русская - инсталлер выбирал русский язык (что собственно в секции Setup и указано), но если ОС любая кроме русской (китайская, корейская, бразильская etc) - то принудительно выбирался английский язык? естественно без окна выбора языка
Скрипты Inno Setup. Помощь и советы [часть 5]




Если можно, я покритикую такой подход.

Есть множество украинцев устанавливающих украиноязычную винду, и я уверен, что подавляющее большинство из них русский понимают гораздо лучше, чем английский.
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение R.i.m.s.k.y. »

ispolin, читай в хелпе про флаг exclusive

Код:

Код: Выделить всё

[Components]
Name: x86; Description: Java(TM) для x86 систем; Check: IsX86; MinVersion: 0.0,5.01;
Name: x86\java6x86; Description: Java(TM) Platform SE 6 Update 35 для x86 систем; Check: IsX86; MinVersion: 0.0,5.01; Flags: exclusive
Name: x86\java7x86; Description: Java(TM) Platform SE 7 Update 7 для x86 систем; Check: IsX86; MinVersion: 0.0,5.01; Flags: exclusive
Name: x64; Description: Java(TM) для x64 систем; Check: IsX64; MinVersion: 0.0,5.01;
Name: x64\java6x64; Description: Java(TM) Platform SE 6 Update 35 для x64 систем; Check: IsX64; MinVersion: 0.0,5.01; Flags: exclusive
Name: x64\java7x64; Description: Java(TM) Platform SE 7 Update 7 для x64 систем; Check: IsX64; MinVersion: 0.0,5.01; Flags: exclusive
[Files]
Source: {tmp}\java6x86.exe; DestDir: {tmp}; Components: x86\java6x86; MinVersion: 0.0,5.01; Flags: deleteafterinstall
Source: {tmp}\java6x64.exe; DestDir: {tmp}; Components: x64\java6x64; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit
Source: {tmp}\java7x64.exe; DestDir: {tmp}; Components: x64\java7x64; MinVersion: 0.0,5.01; Flags: deleteafterinstall 64bit
Source: {tmp}\java7x86.exe; DestDir: {tmp}; Components: x86\java7x86; MinVersion: 0.0,5.01; Flags: deleteafterinstall
[Run]
Filename: {tmp}\java6x86.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 6 устанавливается...Ждите...; Components: x86\java6x86; MinVersion: 0.0,5.01
Filename: {tmp}\java6x64.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 6 устанавливается...Ждите...; Components: x64\java6x64; MinVersion: 0.0,5.01
Filename: {tmp}\java7x64.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 7 устанавливается...Ждите...; Components: x64\java7x64; MinVersion: 0.0,5.01
Filename: {tmp}\java7x86.exe; Parameters: /S; StatusMsg: Java (TM) Platform SE 7 устанавливается...Ждите...; Components: x86\java7x86; MinVersion: 0.0,5.01
Аватара пользователя
ispolin

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение ispolin »

как сделать чтобы при выборе русского языка в реестр вписывался русский язык,а при английском английский?
Аватара пользователя
R.i.m.s.k.y.

Re: Скрипты Inno Setup. Помощь и советы [часть 5]

Сообщение R.i.m.s.k.y. »

ispolin

a) не надо ставить фреймворки 1-3,5, длостаточно поставить оригинальный .Net frameWork 3.5SP1, в нем уже содержатся все предудыщие пропатченные до SP2

б) пиши в RUN несколько строчек с нужными экзешниками с флагом waituntilterminated, инно выполняет скрипт сверху вниз. Этот флаг и так задан неявно пока не поставишь флаг shellexec
Ответить

Вернуться в «Автоматическая установка приложений»