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

Компьютерный форум 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=.

[code]
var
RePackButton: TNewButton;
WebButton: TNewButton;
r: integer;

procedure RePackButtonOnClick(Sender: TObject);
begin
MsgBox('Это сообщение о программе!', mbInformation, mb_Ok);
end;

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

procedure InitializeWizard();
begin
WebButton := TNewButton.Create(WizardForm);
with WebButton do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(42);
Top := ScaleY(260);
Width := ScaleX(80);
Height := ScaleY(23);
Caption := 'Сайт';
WebButton.OnClick := @WebButtonOnClick;
end;

RePackButton := TNewButton.Create(WizardForm);
with RePackButton do
begin
Parent := WizardForm.WelcomePage;
Left := ScaleX(42);
Top := ScaleY(220);
Width := ScaleX(80);
Height := ScaleY(23);
Caption := 'О RePack''s';
RePackButton.OnClick := @RePackButtonOnClick;
end;
end;

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

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

Отправлено: 08:19, 13-11-2022 | #871



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

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


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


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

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


ZVSRus, Спасибо большое!

Я в кодах не силён. А на примерах и подсказках проще.

Кнопка со ссылкой на сайт подошла.

А вот кнопка "О программе" не совсем то что нужно.

Нужно чтобы открывался текстовый файл readme.RTF вот в таком окне:

Кнопка "О программе" с открытием файла readme.RTF


Подскажите пожалуйста такой вариант кнопки.

Отправлено: 17:11, 13-11-2022 | #872


Аватара для ZVSRus

Старожил


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

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


Кнопка "О программе" с открытием файла readme.RTF

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
OutputDir=.

[Files]
Source: "ReadMeRu.rtf"; DestDir: "{tmp}"; Flags: ignoreversion

[code]
var
Flag : Boolean;
AboutButton : TNewButton;
RichEditViewer : TRichEditViewer;
ReadmeRu : AnsiString;

procedure SettingHideShowOnClick(Sender: TObject);
begin
Wizardform.NextButton.Enabled := True;
if Flag = False then begin
RichEditViewer.Hide;
Flag:= True;
AboutButton.Caption := 'Подробнее';
end else begin
RichEditViewer.Show;
Flag:= False;
AboutButton.Caption := 'Закрыть';
Wizardform.NextButton.Enabled := True;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
Wizardform.NextButton.Enabled := False;
RichEditViewer.Hide;
AboutButton.Caption := 'Подробнее';
Flag:= True;
AboutButton.Caption := 'Подробнее';
end;
end;
end;

procedure InitializeWizard();
begin
ExtractTemporaryFile('ReadMeRu.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);

AboutButton := TNewButton.Create(WizardForm);
with AboutButton do
begin
AboutButton.Left := ScaleX(42);
AboutButton.Top := ScaleY(280);
AboutButton.Caption := 'Подробнее';
AboutButton.ShowHint := True
AboutButton.Hint := 'О программе'
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;
RTFText := ReadmeRu;
end;
end;

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

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

Отправлено: 20:07, 13-11-2022 | #873


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


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

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


ZVSRus, Спасибо!

Цитата:
Кнопка "О программе" с открытием файла readme.RTF
Тут что-то с кнопкой "Далее" происходит." Зависает и неактивной становится. Глюк какой-то.
Наверно "Далее" всегда активной должна быть.

Я в коде Wizardform.NextButton.Enabled := False; на True поменял, вроде нормально сейчас.
Не знаю может ещё там что подправить надо.

Подскажите пожалуйста, а как сделать чтобы в этой кнопке при установке с Русским языком
отображалось из ReadmeRu.rtf, а при установке с Английским или по дефолту - из ReadmeEn.rtf.

И также в названиях кнопок Русский и Английский.

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


Отправлено: 20:54, 13-11-2022 | #874


Аватара для ZVSRus

Старожил


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

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


DA-Bro,
Цитата DA-Bro:
Вы прям кладезь знаний.
Удали это. Не совсем правильная формулировка. Языки программирования не знаю от слова совсем. Если-бы вы прошлись по всем форумам от первой страницы до последней, много бы нашли для себя нужных функций и процедур, и познаний было бы больше.
Пример

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Languages]
Name: "ENG"; MessagesFile: "compiler:Languages\English.isl"
Name: "RUS"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: ReadMeRu.rtf; Flags: dontcopy
Source: ReadMeEn.rtf; Flags: dontcopy

[CustomMessages]
ENG.text=More detailed
RUS.text=Подробнее

ENG.text1=Close
RUS.text1=Закрыть

ENG.text2=About the program
RUS.text2=О программе

ENG.text3=Website
RUS.text3=Сайт

[code]
var
Flag : Boolean;
WebButton : TNewButton;
AboutButton : TNewButton;
RichEditViewer : TRichEditViewer;
ReadmeRu, ReadmeEn : 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
ExtractTemporaryFile('ReadMeRu.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeRu.rtf', ReadmeRu);
ExtractTemporaryFile('ReadMeEn.rtf');
LoadStringFromFile(ExpandConstant('{tmp}')+'\ReadMeEn.rtf', ReadmeEn);

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;

if ActiveLanguage='RUS' then RTFText:= ReadmeRu
else
if ActiveLanguage='ENG' then RTFText:= ReadmeEn;
end;
end;

Извиняюсь за перевод. Перевод машинный.

В кнопке ''Далее'' глюка нет, сделано так специально, активируется после нажатия на кнопку ''Подробнее''. Если это вам не нужно, за комментируй
две строки в procedure SettingHideShowOnClick(Sender: TObject); Wizardform.NextButton.Enabled := True; и Wizardform.NextButton.Enabled := False; в
procedure CurPageChanged(CurPageID: Integer);

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


Последний раз редактировалось ZVSRus, 14-11-2022 в 16:25.

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

Отправлено: 15:43, 14-11-2022 | #875


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


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

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


ZVSRus, Спасибо большое!

Подскажите пожалуйста как грамотней удалить папку с содержимым из "C:\ProgramData\Папка программы".
Я посмотрел в справке и не увидел такой константы {C:\ProgramData}.

Что-то вроде этого:

[UninstallDelete]
Type: filesandordirs; Name: "{C:\ProgramData}\Папка программы";

Как правильней удалить из этой папки.

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


Отправлено: 17:37, 14-11-2022 | #876


Аватара для ZVSRus

Старожил


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

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


[UninstallDelete]
Type: filesandordirs; Name: "{commonappdata}\Папка программы";

Ну так в справке же есть.

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

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

Отправлено: 18:18, 14-11-2022 | #877


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


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

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


ZVSRus, понятно. Спасибо!

Просто в справке написано:

{userappdata} & {commonappdata}
Путь к папке с данными приложения (Application Data).

Я вижу что не похоже на "ProgramData" и прошел мимо.

Отправлено: 19:32, 14-11-2022 | #878


Аватара для ZVSRus

Старожил


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

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


Inno Setup - константа для каталога 'ProgramData'?
Задать вопрос
Задано 6 лет, 1 месяц назад
Изменено 2 года, 5 месяцев назад
Просмотрено 9 тысяч раз
11

Я хочу, чтобы моя программа установки скопировала некоторые файлы в ProgramDataкаталог Windows, я вижу, что большинство каталогов Windows имеют предопределенные константы, уже определенные в документации по установке Inno, однако я не вижу ни однойProgramData.

Поэтому я планирую использовать что-то вроде:

{sd}\ProgramData\MyCompany\MyApp

Является ли это правильным / наилучшим способом развертывания в этом каталоге с помощью Inno Setup? Мне просто кажется странным, что для каталога нет константы ProgramData.

Это {commonappdata} константа.

Он назван так, потому что исторически (Windows XP) путь был C:\Documents and Settings\All Users\Application Data (теперь это символическая ссылка на C:\ProgramData).

И по той же причине использование the {sd}\ProgramDataне является правильным способом.

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

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

Отправлено: 19:41, 14-11-2022 | #879


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


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

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


Подскажите пожалуйста!

А как сделать чтобы при русском или анлийском (или по дефолту) выборе установки программы
копировались только те файлы которые нужны для того или иного языка.

Например ReadmeRu.rtf копируется когда русский выбираешь, а ReadmeEn.rtf когда английский

Или Russian.lng при выборе русского копируется, а остальные языки нет. И наоборот.

Например вот эти файлы:
[Files]
Source: "Image\ReadmeRu.rtf"; DestDir: "{tmp}"; Flags: dontcopy
Source: "Image\ReadmeEn.rtf"; DestDir: "{tmp}"; Flags: dontcopy

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

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


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

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


Отправлено: 21:19, 15-11-2022 | #880



Компьютерный форум 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




 
Переход