|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1269 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты 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 |
Старожил Сообщения: 291
|
Профиль | Отправить 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; |
------- Отправлено: 09:59, 16-11-2022 | #881 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить 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 |
Старожил Сообщения: 291
|
Профиль | Отправить 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? или как. |
------- Отправлено: 12:27, 16-11-2022 | #883 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить 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 |
Старожил Сообщения: 291
|
Профиль | Отправить PM | Цитировать nik1967
Хотя пардон, Languages: RU данная формулировка совсем из головы вылетела, или не внимательно понял вопрос. |
------- Отправлено: 12:33, 16-11-2022 | #885 |
Пользователь Сообщения: 98
|
Профиль | Отправить 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 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить 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; |
------- Последний раз редактировалось nik1967, 16-11-2022 в 21:48. Отправлено: 20:53, 16-11-2022 | #887 |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось Vanadiy777, 16-11-2022 в 21:46. Отправлено: 21:05, 16-11-2022 | #888 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Vanadiy777, да чет попробовал, не выходит.
nik1967, да в принципе не критично конечно. Просто глянул у некоторых репакеров так происходит. У них файл появляется один в соответствии RU / EN. Подумал что также типа Languages: ru; обойдётся. |
Отправлено: 21:53, 16-11-2022 | #889 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|