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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;


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

Отправлено: 19:06, 28-03-2013

 

Аватара для habib2302

Ветеран


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

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


vint56, так у меня и стоит ansi

-------
Помог? От "Полезное сообщение" не откажусь!!!


Отправлено: 11:37, 20-10-2013 | #1311



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

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


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


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

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


Здравствуйте. Прошу помощи. Есть функция "размер места на диске для выбранных компонентов"
Код: Выделить весь код
function GetComponentSpace(): Currency; 
var 
  ComponentSpace, LabelSpace: string; 
  StartLen, EndLen, SpaceLen: integer; 
  begin 
    ComponentSpace:= SetupMessage(msgComponentsDiskSpaceMBLabel); 
    LabelSpace:= WizardForm.ComponentsDiskSpaceLabel.Caption; 

    StartLen:= Pos('[mb]', ComponentSpace); 
    SpaceLen:= Length(LabelSpace) - Length(ComponentSpace) + 4; 
    ComponentSpace:= Copy(LabelSpace, StartLen, SpaceLen); 

    Result:= StrToFloat(Trim(ComponentSpace)); 
end;
Как мне перенести "Текущий выбор требует не менее ??? Мб на диске" на лейбл. Пробовал так
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program

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

[Types]
Name: custom; Description: Выборочная; Flags: iscustom

[Components]
Name: a; Description: Моя программа; ExtraDiskSpaceRequired: 15000000; Types: custom
Name: aa; Description: Руководство пользователя; ExtraDiskSpaceRequired: 2655285235; Types: custom
Name: aaa; Description: Русский; ExtraDiskSpaceRequired: 5587282385; Types: custom

[ Code]
var
  SpaceComponentsLabel: TLabel;

function GetComponentSpace(): Currency;
var
ComponentSpace, LabelSpace: string;
StartLen, EndLen, SpaceLen: integer;
begin
ComponentSpace:= SetupMessage(msgComponentsDiskSpaceMBLabel);
LabelSpace:= SpaceComponentsLabel.Caption;

StartLen:= Pos('[mb]', ComponentSpace);
SpaceLen:= Length(LabelSpace) - Length(ComponentSpace) + 4;
ComponentSpace:= Copy(LabelSpace, StartLen, SpaceLen);

Result:= StrToFloat(Trim(ComponentSpace));
end;

procedure InitializeWizard();
begin
  WizardForm.ComponentsDiskSpaceLabel.Hide;

  SpaceComponentsLabel:= TLabel.Create(WizardForm);
  with SpaceComponentsLabel do
  begin
    Parent := WizardForm.SelectComponentsPage;
    AutoSize := False;
    Left := ScaleX(0);
    Top := ScaleY(216);
    Width := ScaleX(417);
    Height := ScaleY(14);
  end;
end;
ничего невыходит

Отправлено: 16:09, 20-10-2013 | #1312


Ветеран


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

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


Nightwishh, немного измененный пример от Johny777

Измененный пример под ваши нужды
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program


[Components]
Name: a; Description: Моя программа; ExtraDiskSpaceRequired: 15000000; Types: full custom;
Name: aa; Description: Руководство пользователя; ExtraDiskSpaceRequired: 2655285235; Types: custom
Name: aaa; Description: Русский; ExtraDiskSpaceRequired: 5587282385; Types: custom



[Code]
var
    OldCompListOnClickCheckProc: TNotifyEvent;
    SpaceComponentsLabel: TLabel;
    

function GetFloatFormText(const UndefText: String): String;
var
    i: Integer;
begin
    for i := 1 to Length(UndefText) do
    case UndefText[i] of
        '0','1','2','3','4','5','6','7','8','9': Result := Result + UndefText[i];
        ',': Result := Result + '.';
    end;
end;


procedure ComponentsListOnClickCheck(Sender: TObject);
begin
    OldCompListOnClickCheckProc(TNewCheckListBox(Sender));
    SpaceComponentsLabel.Caption := 'Дополнительно требуется не менее' + #32 + GetFloatFormText(WizardForm.ComponentsDiskSpaceLabel.Caption) + #32 + 'Мб';
end;


procedure InitializeWizard();
begin
    WizardForm.ComponentsDiskSpaceLabel.Hide;
    OldCompListOnClickCheckProc := WizardForm.ComponentsList.OnClickCheck;
    WizardForm.ComponentsList.OnClickCheck := @ComponentsListOnClickCheck;

    SpaceComponentsLabel:= TLabel.Create(nil);
    with SpaceComponentsLabel do
    begin
        Parent := WizardForm.SelectComponentsPage;
        SetBounds(ScaleX(WizardForm.ComponentsDiskSpaceLabel.Left), ScaleY(WizardForm.ComponentsDiskSpaceLabel.Top), ScaleX(WizardForm.ComponentsDiskSpaceLabel.Width), ScaleY(WizardForm.ComponentsDiskSpaceLabel.Height));
        AutoSize := False;
        Font.Style := [fsBold];
    end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
    case CurPageID of
        wpSelectComponents: ComponentsListOnClickCheck(WizardForm.ComponentsList);
    end;
end;

Оригинальный пост

-------------------------------------------------------------------------------------
Цитата habib2302:
и как решить проблему со скриптом на удаление др. версий приложения при старте. »
Надо бы глянуть, что пишет приложение в реестр, в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Последний раз редактировалось saurn, 21-10-2013 в 21:19.

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

Отправлено: 10:32, 21-10-2013 | #1313


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


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

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


saurn, Спасибо Вам за скрипт и за оригинал спасибо Johny777, но образовался вопрос. Можно ли сделать так чтобы числа не отражались вот так: 7876.5 Мб, а чтобы запись была в таком формате: 7 876.5 Мб, а то читать сложновато? Спасибо за внимание.

Отправлено: 22:57, 21-10-2013 | #1314


Аватара для Dinvin4ester

Старожил


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

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


Ребята помогите!
Что надо прописать, чтобы по умолчанию напротив необходимого элемента стояла галочка (которую при необходимости можно было отключить). например, установка доп. ПО или русификатора?

Отправлено: 23:33, 21-10-2013 | #1315


SHVtYW4=


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

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


Цитата Dinvin4ester:
Что надо прописать, чтобы по умолчанию напротив необходимого элемента стояла галочка (которую при необходимости можно было отключить). »
читать дальше »
Компоненты
Код: Выделить весь код
[Components]
Name: a; Description: AAA; Types: full
Name: a; Description: AAA
Здесь обрати внимание на ; Types: full, если нужно чтоб выбиралось то вставь ; Types: full.
full - это полная установка.
custom - это выборочная установка
compact - это компактная установка.




Задачи
Код: Выделить весь код
[Tasks]
Name: a; Description: A
Name: a; Description: A; Flags: unchecked
Обрати внимание на Flags: unchecked если нужно чтоб выбиралось, то убери Flags: unchecked.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:04, 22-10-2013 | #1316


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


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

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


Господа! такой вопрос...

При повторном запуске программы установки и выборе другого компонента (допустим стоял 1 компонент, а хочу поставить 2-й компонент.... они помечены флагом: Flags: exclusive) появляется такое окошко...

... при этом в установщике настроено поле, которое полностью очищает папку, в которую ставятся компоненты перед установкой...
Код: Выделить весь код
[InstallDelete]
Type: filesandordirs; Name: {app}\{#AppVerName}
1) Я так понял, что [InstallDelete] срабатывает только при первичной установке компонентов, а потом игнорируется?
2) Как можно сделать, чтобы окошко (упомянутое вше) не выскакивало?

Отправлено: 08:45, 22-10-2013 | #1317


Аватара для nik1967

Старожил


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

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


Цитата Mat_y:
Как можно сделать, чтобы окошко (упомянутое вше) не выскакивало? »
Почитать справку
[Setup]: UsePreviousSetupType
Возможные значения:
yes или no
Значение по умолчанию:
yes

Описание:
При значении директивы yes, в начале установки инсталлятор поищет в реестре, не была ли установлена данная программа на данном компьютере, и если так, будет использовать тип и компоненты предыдущей установки, которые выбрал пользователь в прошлый раз при установке, как по умолчанию.

Если Uninstallable=no, эта директива имеет значение no.

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


Отправлено: 09:54, 22-10-2013 | #1318


Ветеран


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

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


Цитата Nightwishh:
Можно ли сделать так чтобы числа не отражались вот так: 7876.5 Мб, а чтобы запись была в таком формате: 7 876.5 Мб, а то читать сложновато? »
Чето я в прошлый раз заморочился, можно было сделать гораздо проще
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program


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


[Components]
Name: a; Description: Моя программа; ExtraDiskSpaceRequired: 15000000; Types: full custom;
Name: aa; Description: Руководство пользователя; ExtraDiskSpaceRequired: 2655285235; Types: custom
Name: aaa; Description: Русский; ExtraDiskSpaceRequired: 5587282385; Types: custom


[Code]
var
    OldCompListOnClickCheckProc: TNotifyEvent;
    SpaceComponentsLabel: TLabel;
    
    
procedure ComponentsListOnClickCheck(Sender: TObject);
begin
    OldCompListOnClickCheckProc(TNewCheckListBox(Sender));
    SpaceComponentsLabel.Caption := WizardForm.ComponentsDiskSpaceLabel.Caption;
end;


procedure InitializeWizard();
begin
    WizardForm.ComponentsDiskSpaceLabel.Hide;
    OldCompListOnClickCheckProc := WizardForm.ComponentsList.OnClickCheck;
    WizardForm.ComponentsList.OnClickCheck := @ComponentsListOnClickCheck;

    SpaceComponentsLabel:= TLabel.Create(nil);
    with SpaceComponentsLabel do
    begin
        Parent := WizardForm.SelectComponentsPage;
        SetBounds(ScaleX(WizardForm.ComponentsDiskSpaceLabel.Left), ScaleY(WizardForm.ComponentsDiskSpaceLabel.Top), ScaleX(WizardForm.ComponentsDiskSpaceLabel.Width), ScaleY(WizardForm.ComponentsDiskSpaceLabel.Height));
        AutoSize := False;
        Font.Style := [fsBold];
        Font.Color := $0000FF;
    end;
end;


procedure CurPageChanged(CurPageID: Integer);
begin
    case CurPageID of
        wpSelectComponents: ComponentsListOnClickCheck(WizardForm.ComponentsList);
    end;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:38, 22-10-2013 | #1319


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


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

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


Всем доброго времени суток. Возник такой вопрос. Насчет скрипта который отвечает за удаление. Что у меня не так?

Получается после установки содержимого через установщик в отдельную папку все норм удаляет только то что установилось. А вот когда устанавливаешь в папку с другими файлами то удаляет не только что установилось а все содержимое той папки.

Скрипт
читать дальше »

#include "botva2.iss"
#include "BASS_Module.iss"

[Setup]
SourceDir=.
OutputDir=Setup
AppName=Сборка модов
AppVerName=Сборка модов
AppVersion=0.8.9
DefaultDirName={pf}\World_of_Tanks
DefaultGroupName=Сборка модов
AllowNoIcons=yes
OutputBaseFilename=setup
WizardImageFile=C:\Users\Farser\Desktop\1.bmp
WizardSmallImageFile=C:\Users\Farser\Desktop\2.bmp
SetupIconFile=C:\Users\Farser\Desktop\back.ico
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=lzma/normal
DiskSpanning=yes
DiskSliceSize=2100000000
SlicesPerDisk=1

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

[Components]
Name: g0; Description: Разное; Flags: dontinheritcheck
Name: g0\c55; Description: шкурки; Flags: dontinheritcheck


[Files]
Source: "C:\Users\Stan\Desktop\Шкурки\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension; Components: g0\c55
Source: BASS_Files\*; DestDir: {tmp}; Flags: dontcopy
Source: music.mp3; DestDir: {tmp}; Flags: dontcopy

[Icons]
Name: "{group}\{cm:UninstallProgram,World of Tanks}"; Filename: "{uninstallexe}"

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

[code]
const
Color = clblack;
procedure Formcolor();
begin
WizardForm.Font.Color:=clWhite;
WizardForm.Color:=Color;
WizardForm.WelcomePage.Color:=Color;
WizardForm.InnerPage.Color:=Color;
WizardForm.FinishedPage.Color:=Color;
WizardForm.LicensePage.Color:=Color;
WizardForm.PasswordPage.Color:=Color;
WizardForm.InfoBeforePage.Color:=Color;
WizardForm.UserInfoPage.Color:=Color;
WizardForm.SelectDirPage.Color:=Color;
WizardForm.SelectComponentsPage.Color:=Color;
WizardForm.SelectProgramGroupPage.Color:=Color;
WizardForm.SelectTasksPage.Color:=Color;
WizardForm.ReadyPage.Color:=Color;
WizardForm.PreparingPage.Color:=Color;
WizardForm.InstallingPage.Color:=Color;
WizardForm.InfoAfterPage.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.DiskSpaceLabel.Color:=Color;
WizardForm.DirEdit.Color:=Color;
WizardForm.GroupEdit.Color:=Color;
WizardForm.PasswordLabel.Color:=Color;
WizardForm.PasswordEdit.Color:=Color;
WizardForm.PasswordEditLabel.Color:=Color;
WizardForm.ReadyMemo.Color:=Color;
WizardForm.ReadyMemo.ScrollBars:= ssNone
WizardForm.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
WizardForm.WelcomeLabel1.Font.Color:=clWhite;
WizardForm.InfoBeforeClickLabel.Color:=Color;
WizardForm.MainPanel.Color:=Color;
WizardForm.PageNameLabel.Color:=Color;
WizardForm.PageDescriptionLabel.Color:=Color;
WizardForm.ReadyLabel.Color:=Color;
WizardForm.FinishedLabel.Color:=Color;
WizardForm.YesRadio.Color:=Color;
WizardForm.NoRadio.Color:=Color;
WizardForm.WelcomeLabel2.Color:=Color;
WizardForm.LicenseLabel1.Color:=Color;
WizardForm.InfoAfterClickLabel.Color:=Color;
WizardForm.ComponentsList.Color:=Color;
WizardForm.ComponentsDiskSpaceLabel.Color:=Color;
WizardForm.BeveledLabel.Color:=Color;
WizardForm.StatusLabel.Color:=Color;
WizardForm.FilenameLabel.Color:=Color;
WizardForm.SelectDirLabel.Color:=Color;
WizardForm.SelectStartMenuFolderLabel.Color:=Color;
WizardForm.SelectComponentsLabel.Color:=Color;
WizardForm.SelectTasksLabel.Color:=Color;
WizardForm.LicenseAcceptedRadio.Color:=Color;
WizardForm.LicenseNotAcceptedRadio.Color:=Color;
WizardForm.UserInfoNameLabel.Color:=Color;
WizardForm.UserInfoNameEdit.Color:=Color;
WizardForm.UserInfoOrgLabel.Color:=Color;
WizardForm.UserInfoOrgEdit.Color:=Color;
WizardForm.PreparingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Color:=Color;
WizardForm.FinishedHeadingLabel.Font.Color:=clWhite;
WizardForm.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
WizardForm.PageNameLabel.Font.Color:=clWhite;
end;

procedure InitializeWizard();
begin
Formcolor();
ExtractTemporaryFile('BASS.dll');
ExtractTemporaryFile('CallbackCtrl.dll');
ExtractTemporaryFile('botva2.dll');
ExtractTemporaryFile('MusicButton.png');
ExtractTemporaryFile('Music.mp3');

BASS_Init('{tmp}\Music.mp3') //Запускаем музыку
//Можно добавить в инсталл несколько песен
//BASS_Init(ExpandConstant('{tmp}\*')) //Поиск по маске
BASS_CreateOnOffButton(WizardForm, '{tmp}\MusicButton.png', 20, 320, 36, 36, 4) //Создаем кнопку вкл/выкл
end;

procedure DeinitializeSetup();
begin
BASS_DeInit; //Освобождаем процесс
gdipShutdown
end;

Отправлено: 17:09, 22-10-2013 | #1320



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход