Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

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

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z
Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z
Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:09, 04-04-2018

 

Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


Пример

Код: Выделить весь код
[Setup]
 AppName=My Application
 AppVersion=1.5
 DefaultDirName={pf}\My Application
 OutputDir=.

[Languages]
 Name: "english"; MessagesFile: "compiler:Languages\English.isl"
 Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
 Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
 Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy

 Source: "Image\ReadmeRu.rtf"; DestDir: "{app}"; Check: LangRusCheck; Flags: ignoreversion
 Source: "Image\ReadmeEn.rtf"; DestDir: "{app}"; Check: LangEngCheck; Flags: ignoreversion

 Source: "{app}\Language\English.lng"; DestDir: "{app}\Language"; Check: LangEngCheck; Flags: ignoreversion
 Source: "{app}\Language\Russian.lng"; DestDir: "{app}\Language"; Check: LangRusCheck; Flags: ignoreversion

[Code*]
var
  LangRus : TNewRadioButton;
  LangEng : TNewRadioButton;

function LangRusCheck: Boolean;                           
 begin                                                    
   Result:= LangRus.Checked;                              
 end;                                                     

function LangEngCheck: Boolean;                           
 begin                                                   
   Result:= LangEng.Checked;                             
 end;                                                    

procedure InitializeWizard();
begin
  LangRus := TNewRadioButton.Create(WizardForm);
  with LangRus do                                                             
  begin                                                                      
    Parent  := WizardForm.SelectDirPage;
    SetBounds(ScaleX(0),ScaleY(120),ScaleX(60),ScaleY(17));
    Caption := 'Русский';                                                     
    Checked := True;
  end;                                                                        

  LangEng := TNewRadioButton.Create(WizardForm);                              
  with LangEng do                                                             
  begin                                                                       
    Parent  := WizardForm.SelectDirPage;
    SetBounds(ScaleX(0),ScaleY(140),ScaleX(80),ScaleY(17));
    Caption := 'Английский';                                                 
  end;
end;

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:59, 16-11-2022 | #881



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


ZVSRus, Спасибо! Код выше работает. Но не совсем то что нужно.

Надо чтобы по тихому молчком копировались файлы.
Запустил допустим я инталлятор и выбрал RU или EN фейс для дальнейшей установки.
И в зависимости от выбора языка установки по тихому копируются нужные файлы в соответствии выбранного языка.

Вот тут например копируется файл в зависимости от разрядности Check: "Такой то";

Source: "{app}\AlarmClock,1.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "Is64BitInstallMode"; Flags: ignoreversion
Source: "{app}\AlarmClock,2.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "not Is64BitInstallMode"; Flags: ignoreversion

И если я не ошибаюсь то должно вроде быть например Check: "Russian"; или Check: "English"; да хоть или Check: "Китайский"; если в выборе инсталлятора такой язык есть.

Как-то вот так:

Source: "{app}\AlarmClockEN.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "English"; Flags: ignoreversion
Source: "{app}\AlarmClockRU.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "Russian"; Flags: ignoreversion

Вроде такое должно быть без костылей. Никак не найду, если конечно не ошибаюсь.
И скрипты с примерами у себя покопался только под одну русскую установку.

Отправлено: 11:47, 16-11-2022 | #882


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


DA-Bro

Надо чтобы по тихому молчком копировались файлы.
Запустил допустим я инталлятор и выбрал RU или EN фейс для дальнейшей установки.
И в зависимости от выбора языка установки по тихому копируются нужные файлы в соответствии выбранного языка.

Вопрос не совсем понятен. Запустил допустим я инталлятор и выбрал RU или EN фейс для дальнейшей установки.
И в зависимости от выбора языка установки по тихому копируются нужные файлы в соответствии выбранного языка.
Это вы сейчас о чём. Если о секции [Languages], то эта секция служит для того чтобы видеть какой текст на всех страницах читать (русский человек будет читать на русском, англичанин на английском).

Source: "{app}\AlarmClock,1.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "Is64BitInstallMode"; Flags: ignoreversion
Source: "{app}\AlarmClock,2.exe"; DestDir: "{app}"; DestName: "AlarmClock.exe"; Check: "not Is64BitInstallMode"; Flags: ignoreversion


Этот пример понятен, вы хотите чтобы у ReadmeRu или ReadmeEn в конечной папке не было приставки Ru или En? или как.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:27, 16-11-2022 | #883


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


DA-Bro,
Пример
Код: Выделить весь код
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={pf}\Test
DisableWelcomePage=False
OutputDir=.

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "EN"; MessagesFile: "compiler:Default.isl" 

[Files]
Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeRu.rtf"; DestDir: "{app}"; Languages: RU; Flags: ignoreversion
Source: "Image\ReadmeEn.rtf"; DestDir: "{app}"; Languages: EN; Flags: ignoreversion
Source: "Language\Russian.lng"; DestDir: "{app}\Language"; Languages: RU; Flags: ignoreversion
Source: "Language\English.lng"; DestDir: "{app}\Language"; Languages: EN; Flags: ignoreversion
Из справки
Есть три дополнительные параметры, которые могут использоваться во всех секциях, содержащих параметры. Это:

Languages
Список поддерживаемых языков, разделенных пробелами, которые указывают инсталлятору, к какому языку относится запись. Если пользователь выберет язык, указанный в этом списке, запись будет обработан (например, установится файл).

Запись без указанного параметра Languages всегда обрабатывается, если только другой параметр этого не запретит.

Кроме списка, можно использовать логические выражения. Для справки обратитесь к параметрам секций [Components] и [Tasks].

Например:
Languages: en nl

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:27, 16-11-2022 | #884


Аватара для ZVSRus

Старожил


Сообщения: 284
Благодарности: 85

Профиль | Отправить PM | Цитировать


nik1967
Хотя пардон, Languages: RU данная формулировка совсем из головы вылетела, или не внимательно понял вопрос.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:33, 16-11-2022 | #885


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


nik1967, Спасибо! Вот это у меня сработало как я и хотел. Вроде как раз то что искал.

Код: Выделить весь код
Source: "{app}\*.*"; DestDir: "{app}"; Flags: ignoreversion

Source: "{app}\Language\Russian.lng"; DestDir: "{app}\Language"; Languages: ru; Flags: ignoreversion
Source: "{app}\Language\English.lng"; DestDir: "{app}\Language"; Languages: en; Flags: ignoreversion
А вот эти строчки не срабатывают.
А вот эти строчки не срабатывают.
То есть почему оба файла появляются в системной папке "Temp".

Код: Выделить весь код
Source: "{tmp}\ReadmeRu.rtf"; DestDir: "{tmp}"; Languages: ru; Flags: dontcopy
Source: "{tmp}\ReadmeEn.rtf"; DestDir: "{tmp}"; Languages: en; Flags: dontcopy
В инсталляторе то все нормально, показывает "Описание программы" на каком языке и нужно.
Эти файлы ReadmeRu.rtf и ReadmeEn.rtf для справки описания программы в инсталляторе.
В папку с программой их не нужно копировать.

Нужны для этого кода:
http://forum.oszone.net/post-2996460-875.html

И когда я запускаю инсталлятор, выбираю Русский, появляется окно "Мастер установки".
Захожу в папку "C:\Users\Я\AppData\Local\Temp" и вижу это:



Файла ReadmeEn.rtf по идее не должно там быть.
Может код их все сразу туда копирует. И параметры в "Source:" уже не сработают.

Как Вы говорили: если только другой параметр этого не запретит.

Не пойму где засада.

Последний раз редактировалось DA-Bro, 25-11-2022 в 01:44.


Отправлено: 19:58, 16-11-2022 | #886


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


DA-Bro, а тебе так важно, чтобы во временную папку копировался либо RU, либо EN? Всё равно ведь после установки эта папка удаляется. На твоём месте я бы забил на это.
Ну, или если это так важно, то

Код: Выделить весь код
procedure InitializeWizard();
begin
  if ActiveLanguage='RU' then begin
    ExtractTemporaryFile('ReadMeRu.rtf');
    LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);
  end else
  if ActiveLanguage='EN' then begin
    ExtractTemporaryFile('ReadMeEn.rtf');
    LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', ReadmeEn);
  end;
И ещё одна странность: почему ты из папки назначения (Source: "{app}\Language\Russian.lng"; ) копируешь в папку назначения же (DestDir: "{app}\Language"; )?

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 16-11-2022 в 21:48.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:53, 16-11-2022 | #887


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Не пойму где засада. »
DA-Bro,
В процедуре прописано извлечение сразу обоих файлов:
Код: Выделить весь код
procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMeRu.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);
ExtractTemporaryFile('ReadMeEn.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', ReadmeEn);

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...


Последний раз редактировалось Vanadiy777, 16-11-2022 в 21:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:05, 16-11-2022 | #888


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, да чет попробовал, не выходит.

nik1967, да в принципе не критично конечно.
Просто глянул у некоторых репакеров так происходит. У них файл появляется один в соответствии RU / EN.
Подумал что также типа Languages: ru; обойдётся.

Отправлено: 21:53, 16-11-2022 | #889


Аватара для nik1967

Старожил


Сообщения: 440
Благодарности: 251

Профиль | Сайт | Отправить PM | Цитировать


DA-Bro,
Немного "причесал" скрипт примера

Код: Выделить весь код
[Setup]
AppName=Test
AppVersion=1.5
DefaultDirName={pf}\Test
DisableWelcomePage=False
OutputDir=.

[Languages]
Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "EN"; MessagesFile: "compiler:Default.isl" 

[Files]
Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy
//Source: "Language\Russian.lng"; DestDir: "{app}\Language"; Languages: RU; Flags: ignoreversion
//Source: "Language\English.lng"; DestDir: "{app}\Language"; Languages: EN; Flags: ignoreversion

[CustomMessages]
EN.text=More detailed
RU.text=Подробнее
EN.text1=Close
RU.text1=Закрыть
EN.text2=About the program
RU.text2=О программе
EN.text3=Website
RU.text3=Сайт

[code]
var
  Flag: Boolean;
  WebButton,AboutButton: TNewButton;
  RichEditViewer: TRichEditViewer;
  Readme: AnsiString;
  r: integer;

procedure WebButtonOnClick(Sender: TObject);
begin
  ShellExec('open', 'http://forum.oszone.net/post-2996351-870.html', '','', SW_SHOW, ewNoWait, r);
end;

procedure SettingHideShowOnClick(Sender: TObject);
begin
  Wizardform.NextButton.Enabled := True;
    if Flag = False then begin
      RichEditViewer.Hide;
      Flag:= True;
      AboutButton.Caption := CustomMessage('text');
    end else begin
      RichEditViewer.Show;
      Flag:= False;
      AboutButton.Caption:= CustomMessage('text1');
      Wizardform.NextButton.Enabled:= True;
    end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpWelcome: begin
      Wizardform.NextButton.Enabled:= False;
      RichEditViewer.Hide;
      AboutButton.Caption:= CustomMessage('text');
      Flag:= True;
    end;
  end;
end;

procedure InitializeWizard();
begin
  case ActiveLanguage of
    'RU': begin
      ExtractTemporaryFile('ReadMeRu.rtf');
      LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', Readme);
    end;
    'EN': begin 
      ExtractTemporaryFile('ReadMeEn.rtf');
      LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', Readme);
    end;
  end; 

  WebButton:= TNewButton.Create(WizardForm);
  with WebButton do begin
    Parent := WizardForm.WelcomePage;
    SetBounds(ScaleX(42),ScaleY(250),ScaleX(80),ScaleY(23));
    Caption := CustomMessage('text3');
    WebButton.OnClick := @WebButtonOnClick;
  end;

  AboutButton:= TNewButton.Create(WizardForm);
  with AboutButton do begin
    AboutButton.SetBounds(ScaleX(42),ScaleY(280),ScaleX(80),ScaleY(23));
    AboutButton.Caption:= CustomMessage('text');
    AboutButton.ShowHint:= True;
    AboutButton.Hint:= CustomMessage('text2');
    AboutButton.OnClick:= @SettingHideShowOnClick;
    AboutButton.Parent:= WizardForm.WelcomePage;
    AboutButton.Cursor:= crHand;
    Flag:= True;
  end;

  RichEditViewer:= TRichEditViewer.Create(WizardForm);
  with RichEditViewer do begin
    Parent:= WizardForm.WelcomePage;
    SetBounds(ScaleX(164),ScaleY(0),ScaleX(333),ScaleY(314));
    ScrollBars:= ssVertical;
    ReadOnly:= True;
    RTFText:= Readme;
  end;
end;

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Последний раз редактировалось nik1967, 16-11-2022 в 22:10. Причина: Немного ещё изменил

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:02, 16-11-2022 | #890



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты Inno Setup. Помощь и советы [часть 5] El Sanchez Автоматическая установка приложений 1999 28-03-2013 19:09
Скрипты Inno Setup. Помощь и советы [часть 4] El Sanchez Автоматическая установка приложений 2099 22-05-2012 23:16
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58




 
Переход