Имя пользователя:
Пароль:
 | Правила  

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 926 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 825 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 00:28, 04-11-2010

 

Аватара для valyok666

Старожил


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

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


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

#define Font "Zombie.ttf"
#define FontName "DS Zombie Cyr"

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

[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: {#Font}; Flags: dontcopy;

[code]
var
IsCustomFontInstalled: boolean;
FontName: string;

function AddFontResource(FileName: PAnsiChar): Integer; external 'AddFontResourceA@gdi32.dll stdcall';
function RemoveFontResource(FileName: PAnsiChar): BOOL; external 'RemoveFontResourceA@gdi32.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('{#Font}');
IsCustomFontInstalled:=AddFontResource(ExpandConstant('{tmp}')+'\{#Font}')>0;
if IsCustomFontInstalled then SendMessage(HWND_BROADCAST,$1D,0,0);
if FontExists('{#FontName}') then FontName:='{#FontName}' else FontName:='Arial';
Result:= True;
end;

Procedure InitializeWizard();
begin
WizardForm.Font.Name:= FontName;
end;

procedure DeInitializeSetup();
begin
WizardForm.Free;
if IsCustomFontInstalled then
if RemoveFontResource(PAnsiChar(ExpandConstant('{tmp}')+'\{#Font}')) then SendMessage(HWND_BROADCAST,$1D,0,0);
end;

или скачать библиотеку от dvd4el CreateFont.7z
также есть пример от Shegorat и VinTage Test_Font_2.7z


Devils Night,
есть такое внесение значение в INI-файл в зависимости от выбранного чекбокса
читать дальше »

AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

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

[Run]
Filename: "{app}\MyProg"; Description: "{cm:LaunchProgram, MyProg}"; Flags: nowait postinstall skipifsilent

[code]
var
IniCheckBox: TCheckBox;

procedure InitializeWizard();
begin
IniCheckBox:= TCheckBox.Create(WizardForm);
IniCheckBox.Left:= WizardForm.RunList.Left + 4;
IniCheckBox.Top:= WizardForm.RunList.Top + 10;
IniCheckBox.Width:= WizardForm.RunList.Width;
IniCheckBox.Height:= 14
IniCheckBox.Caption:=' Изменить язык интерфейса на русский';
IniCheckBox.Parent:= WizardForm.FinishedPage;
end;

procedure DeinitializeSetup();
begin
if WizardForm.CurPageID = WpFinished then
begin
if IniCheckBox.Checked then
SetIniString('Setting','Language', 'RU',ExpandConstant('{app}\Language.ini')) //Секция, подключ, значение, файл Ini
else
SetIniString('Setting','Language', 'EN',ExpandConstant('{app}\Language.ini'))
end;
end;

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"


Последний раз редактировалось valyok666, 22-10-2011 в 18:47.

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

Отправлено: 18:26, 22-10-2011 | #3701



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

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


Новый участник


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

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


Как пример , что нибудь в этом роде..

Отправлено: 18:42, 22-10-2011 | #3702


Аватара для Edison007

Новый участник


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

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


Цитата Sotonisto:
Всем доброго времени суток! Кто может поделиться скриптом подключения (*.ttf) шрифтов к инсталлятору? »
Нормально это сделать не получится, тк юзеры у которых, какие-либо сборки шрифт не будет работать...
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:46, 22-10-2011 | #3703


Аватара для valyok666

Старожил


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

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


mosre, C&C_Renegade ISDone5_v1.2-Final.7z
посмотрите вот этот хороший скрипт

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"


Отправлено: 18:48, 22-10-2011 | #3704


Забанен


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

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


Цитата valyok666:
есть такое внесение значение в INI-файл в зависимости от выбранного чекбокса »
Спасибо! В общем то нужно было без чебокса, ну это ладно, кое как вырезал, получилось
такое
Код: Выделить весь код
procedure DeinitializeSetup();
begin
if WizardForm.CurPageID = WpFinished then
begin
SetIniString('Component1','outname', 'plugin1.dll',ExpandConstant('{app}\config.ini'))
end;
end;


Ещё один вопросик, как совместить эти два кода?
Код 1
Код: Выделить весь код
function InitializeSetup: Boolean;
begin
Result:=true;
if not (FileExists('{pf}\MyProg\MyProg.exe'))
then
begin
MsgBox('MyProg не найден, сначала установите MyProg.', mbInformation, MB_OK);
Result:=false;
end;
end;
Код 2
Код: Выделить весь код
procedure DeinitializeSetup();
begin
if WizardForm.CurPageID = WpFinished then
begin
SetIniString('Component1','outname', 'plugin1.dll',ExpandConstant('{app}\config.ini'))
end;
end;

при совмещении компилится нормально, но после выскакивания окошка MyProg не найдена, сначала установите MyProg. вылазит сообщение if WizardForm.CurPageID = WpFinished then

Последний раз редактировалось Devils Night, 22-10-2011 в 20:52.


Отправлено: 20:39, 22-10-2011 | #3705


Аватара для valyok666

Старожил


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

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


Devils Night, кинька скрипт полностью посмотрю

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"


Отправлено: 21:32, 22-10-2011 | #3706


Забанен


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

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


Цитата valyok666:
кинька скрипт полностью посмотрю »
Вот как есть.
читать дальше »
Код: Выделить весь код
[Setup]
AppId={{9CC9A926-EC33-48FC-81D9-2EEAB3BF79B7}
AppName=My Program
AppVersion=1.5
;AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
AllowNoIcons=yes
OutputDir=.
OutputBaseFilename=setup0
Compression=lzma
SolidCompression=yes

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


[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

[Icons]
Name: "{group}\{cm:UninstallProgram,My Program}"; Filename: "{uninstallexe}"

[ code]
function InitializeSetup: Boolean;
begin
Result:=true;
if not (FileExists('{pf}\MyProg\MyProg.exe'))
then
begin
MsgBox('MyProg не найден, сначала установите MyProg.', mbInformation, MB_OK);
Result:=false;
end;
end;

procedure DeinitializeSetup();
begin
if WizardForm.CurPageID = WpFinished then
begin
SetIniString('Component1','outname', 'plugin1.dll',ExpandConstant('{app}\config.ini'))
end;
end;

Отправлено: 22:02, 22-10-2011 | #3707


Аватара для valyok666

Старожил


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

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


Devils Night, незнаю ща посмотрю

-------
Салтыков-Щедрин: "А надо учиться, учиться, учиться"


Последний раз редактировалось valyok666, 22-10-2011 в 23:11.


Отправлено: 22:44, 22-10-2011 | #3708


Аватара для Rikill

Старожил


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

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


Edison007, не знаешь, что на это именно влияет? Я слышал шегорат разобрался. Вот интересно.

valyok666, тсс. Предупреждения не хватило?)

-------
"Око за око приведёт к слепоте мира"- Ганди


Последний раз редактировалось Rikill, 23-10-2011 в 01:58.


Отправлено: 01:19, 23-10-2011 | #3709


Аватара для filehome

Новый участник


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

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


Помогите пожалуйста!
Как вывести из файла vs.ini в эту форму динамически.
в файле vs.ini содержится

[Название]

а1=hic.dll
a2=soz.exe
a3=axw.doc
a4=ver.dll
a5=fo.dll
a6=oo.dll
и так до 20.
Как мне вывести только название файлов?



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

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
Uninstallable=No
DisableProgramGroupPage=Yes
CreateAppDir=No
AlwaysShowDirOnReadyPage=Yes
InternalCompressLevel=none
Compression=none

[Files]
#define MaxTarget 10
#define i

#sub AddFile
Source: compiler:Examples\*; DestDir: {code:CurrentDir|{#i}}; Check: NeedCopy(ExpandConstant('{#i}'))
#endsub

#for {i = 0; i < MaxTarget; i++} AddFile

[Run]
#sub RunFile
Filename: {code:RunDir|{#i}}\Archive.exe; StatusMsg: Ðàñïàêîâêà ôîðì {code:RunDir|{#i}}; BeforeInstall: ChangeProgress(ExpandConstant('{#i}')); Flags: skipifdoesntexist
#endsub

#for {i = 0; i < MaxTarget; i++} RunFile

[code]
var
Names: TArrayOfString;
Value: TArrayOfString;
Page: TInputOptionWizardPage;
ProgressBar: TNewProgressBar;
SelectAll: TButton;

function NeedCopy(Param: string): Boolean;
begin
if (StrToInt(Param) < Page.CheckListBox.Items.Count) and
Page.CheckListBox.Checked[StrToInt(Param)] then
begin
Result:= True;
end;
end;

function CurrentDir(Param: string): string;
begin
if Page.CheckListBox.Checked[StrToInt(Param)] then
Result:= Page.CheckListBox.ItemSubItem[StrToInt(Param)]
else Result:= '';
end;

function RunDir(Param: string): string;
begin
if (StrToInt(Param) < Page.CheckListBox.Items.Count) and
Page.CheckListBox.Checked[StrToInt(Param)] then
Result:= Page.CheckListBox.ItemSubItem[StrToInt(Param)]
else Result:= '';
end;

procedure ChangeProgress(Param: string);
begin
if (StrToInt(Param) < Page.CheckListBox.Items.Count) and
Page.CheckListBox.Checked[StrToInt(Param)] then
ProgressBar.Position:= ProgressBar.Position + 1;
end;

procedure CurPageChanged(CurPageID: Integer);
var
i: integer;
begin
if CurPageID = wpReady then
begin
with WizardForm.ReadyMemo.Lines do
begin
Clear;
Add('Destination location:');
for i:= 0 to Page.CheckListBox.Items.Count - 1 do
begin
if Page.CheckListBox.Checked[i] then
Add(#9 + Page.CheckListBox.ItemSubItem[i] +
' - ' + Page.CheckListBox.ItemCaption[i]);
end;
end;
end;

if CurPageID = Page.ID then
begin
SelectAll.Visible:= True;
end else
SelectAll.Visible:= False;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
CheckedCount, i: integer;
begin
if CurStep = ssInstall then
begin
CheckedCount:= 0;
for i:= 0 to Page.CheckListBox.Items.Count - 1 do
begin
if Page.CheckListBox.Checked[i] then
CheckedCount:= CheckedCount + 1;
end;
with WizardForm.ProgressGauge do
begin
ProgressBar := TNewProgressBar.Create(WizardForm);
ProgressBar.Left := Left;
ProgressBar.Top := Top + Height + ScaleY(8);
ProgressBar.Width := Width;
ProgressBar.Height := Height;
ProgressBar.Parent := WizardForm.InstallingPage;
ProgressBar.Max := CheckedCount;
ProgressBar.Position := 0;
end;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
i: integer;
begin
if CurPageID = Page.ID then
begin
Result := False;
for i:= 0 to Page.CheckListBox.Items.Count - 1 do
begin
if (Page.CheckListBox.Checked[i]) then
begin
Result := True;
Break;
end;
end;
if Not Result then MsgBox('Âûáåðèòå õîòÿ áû îäèí ïóòü óñòàíîâêè !', mbInformation, MB_OK);
end else
begin
Result := True;
end;
end;

procedure ButtonOnClick(Sender: TObject);
var
i: integer;
begin
if (SelectAll.Tag = 0) then
begin
for i:= 0 to Page.CheckListBox.Items.Count - 1 do
begin
Page.CheckListBox.Checked[i]:= True;
end;
SelectAll.Caption := 'Î÷èñòèòü âñå';
SelectAll.Tag:= 1;
end else
if (SelectAll.Tag = 1) then
begin
for i:= 0 to Page.CheckListBox.Items.Count - 1 do
begin
Page.CheckListBox.Checked[i]:= False;
end;
SelectAll.Caption := 'Âûáðàòü âñå';
SelectAll.Tag:= 0;
end;
end;

procedure InitializeWizard();
var
I: Integer;
S: String;

begin
Page := CreateInputOptionPage(wpWelcome,
'Âûáåðèòå êîìïîíåíòû', 'Êàêèå êîìïîíåíòû õîòèòå óñòàíîâèòü?',
'Âûáåðèòå íåîáõîäèìûå êîìïîíåíòû è íàæìèòå äàëåå.',
False, True);

SelectAll:= TButton.Create(WizardForm);
SelectAll.Width := WizardForm.BackButton.Width + ScaleX(10);
SelectAll.Height := WizardForm.BackButton.Height;
SelectAll.Top := WizardForm.BackButton.Top;
SelectAll.Left := WizardForm.BackButton.Left - WizardForm.BackButton.Width - ScaleX(40);
SelectAll.OnClick := @ButtonOnClick;
SelectAll.Parent := WizardForm;
SelectAll.Visible:= False;
SelectAll.Caption := 'Âûáðàòü âñå';
SelectAll.Tag:= 0;

if RegGetValueNames(HKEY_CURRENT_USER, 'Software\My Program\Path', Names) then
begin
SetArrayLength(Value,GetArrayLength(Names));
for I := 0 to GetArrayLength(Names)-1 do
begin
RegQueryStringValue(HKEY_CURRENT_USER, 'Software\My Program\Path', Names[i], Value[i]);
Page.CheckListBox.AddCheckBox(Value[i], Names[i], 0, False, True, False, False, nil);
end;
end;
end;

Отправлено: 08:16, 23-10-2011 | #3710



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход