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

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

 

Ветеран


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

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


Johny777, спасибо за исправления.
Цитата Johny777:
заместо функции GetPreviousDir(...) проще всего получить пред. путь так »
Этот вариант там как раз и не работал, из-за запятой в имени раздела.

Отправлено: 13:17, 14-04-2013 | #181



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

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


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


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

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


Цитата Johny777:
замени у себя всю секцию кода на эту »
Заменил я у себя всю секцию кода, но тепер пишет при компиляции Unknown identifier 'FormatFloat'

Отправлено: 14:30, 14-04-2013 | #182


Ветеран


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

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


neorom, Компилировать нужно на расширенной версии от китайцев. Тем более, что: ISTool давным-давно устарело и большинство параметров не знает.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:41, 14-04-2013 | #183


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


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

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


audiofeel, Честно говоря,
Цитата audiofeel:
Я делаю вот так, пробуй »
не получилось, "Текущий выбор требует не менее [mb] МБ на диске" и "Программа [Name] установлена на Ваш компьютер. Приложение можно запустить бла, бла, бла"

Отправлено: 16:08, 14-04-2013 | #184


Аватара для audiofeel

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


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

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


Nightwishh,
Цитата Nightwishh:
не получилось »
ну попробуй сделать так; добавь
Код: Выделить весь код
 [Languages]
Name: ru; MessagesFile: compiler:Default.isl
[Messages]
ru.ComponentsDiskSpaceMBLabel=Текущий выбор требует не менее *****МБ на диске // и укажи сколько места требуется сам
ru.FinishedLabel=Программа ******* установлена на Ваш компьютер.  // здесь тоже пиши что хочешь
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:26, 14-04-2013 | #185


Ветеран


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

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


Nightwishh, audiofeel,
Код: Выделить весь код
Label1.Caption := WizardForm.ComponentsDiskSpaceLabel.Caption;

Цитата GolD18:
Здравствуйте. Не видно надпись снизу. Один квадратик остался. Что изменить надо? »
читать дальше »
Код: Выделить весь код
const
Color = clblack;

procedure InitializeWizard();
begin
  WizardForm.Font.Color:=clLime;
  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:=clblack;
  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.TypesCombo.Color:=Color;
  WizardForm.WelcomeLabel1.Color:=Color;
  WizardForm.WelcomeLabel1.Font.Color:=clLime;
  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:=clLime;
  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:=clLime;
  WizardForm.Bevel.Hide;
  WizardForm.BeveledLabel.Hide;
  WizardForm.Bevel1.Hide;

  WizardForm.NoIconsCheck.Width := ScaleY(16)

  with TLabel.Create(nil) do
  begin
    Parent:= WizardForm.SelectProgramGroupPage;
    SetBounds(WizardForm.NoIconsCheck.Left + 18, WizardForm.NoIconsCheck.Top + 2, 0, 0)
    AutoSize:= True;
    Transparent := True;
    Font.Color := clLime;
    Caption := SetupMessage(msgNoProgramGroupCheck2);
  end;
end;

Последний раз редактировалось saurn, 14-04-2013 в 23:25.

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

Отправлено: 20:14, 14-04-2013 | #186


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


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

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


Здравствуйте. Нужна помощь. При запуске инсталла выдаёт такую ошибку "could not call proc"
Код: Выделить весь код
 #define NeedSize 4380
#define NeedInstallSize 78900

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

[ Code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif

var
  PathLabel, TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TLabel;
  FreeMB, TotalMB: Cardinal;
  Drive: String;

function PathCompactPathEx(pszOut: String; pszSrc: String; cchMax: UINT; dwFlags: DWORD): BOOL;
  external 'PathCompactPathEx{#A}@shlwapi.dll stdcall';

function ShortPath(Input: String; Length: Integer): String;
begin
  Result := StringOfChar(#32, 260);
  PathCompactPathEx(Result, Input, Length, 0);
end;

function NumToStr(Float: Extended): String;
begin
  Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
  while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
    SetLength(Result, Length(Result)-1);
end;

function MbOrTb(Float: Extended): String;
begin
  if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
    if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
      Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
begin
  Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
  GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);
  TotalSpaceLabel.Caption:= 'Всего места на диске: '+MbOrTb(TotalMB);
  FreeSpaceLabel.Caption:= 'Доступно места на диске: '+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
  InstallSpacelabel.Caption:= 'Требуется места для установки: '+MbOrTb({#NeedInstallSize});
  NeedSpaceLabel.Caption:= 'Требуется места на диске: '+MbOrTb({#NeedSize});
  WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize});
  PathLabel.Caption := ShortPath('Install Path:' + #32 + TEdit(Sender).Text, 55);
end;

procedure InitializeWizard();
begin
  with WizardForm do
  begin
    PathLabel := TLabel.Create(WizardForm)
    with PathLabel do
    begin
      Parent := DirEdit.Parent;
      Caption := ShortPath('Install Path:' + #32 + DirEdit.Text, 55);
      Transparent := True;
      Font.Size := 10;
      Left := DirEdit.Left;
      Top := DirEdit.Top + Round((DirEdit.Height - Height) div 2);
    end;
    DirEdit.OnChange := @DirEditOnChange;
    DirEdit.Hide;
  end;
  TotalSpaceLabel:= TLabel.Create(WizardForm);
  TotalSpaceLabel.AutoSize:= False;
  TotalSpaceLabel.SetBounds(0, 120, 300, 20);
  TotalSpaceLabel.Parent:= WizardForm.SelectDirpage;

  FreeSpaceLabel:= TLabel.Create(WizardForm);
  FreeSpaceLabel.AutoSize:= False;
  FreeSpaceLabel.SetBounds(0, 140, 300, 20);
  FreeSpaceLabel.Parent:= WizardForm.SelectDirpage;

  InstallSpacelabel:= TLabel.Create(WizardForm);
  InstallSpacelabel.AutoSize:= False;
  InstallSpacelabel.SetBounds(0, 160, 300, 20);
  InstallSpacelabel.Parent:= WizardForm.SelectDirpage;

  NeedSpaceLabel:= TLabel.Create(WizardForm);
  NeedSpaceLabel.AutoSize:= False;
  NeedSpaceLabel.SetBounds(0, 180, 300, 20);
  NeedSpaceLabel.Parent:= WizardForm.SelectDirpage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then
  begin
    DirEditOnChange(nil)
  end;
end;
Всему виной вот эта строчка
Код: Выделить весь код
PathLabel.Caption := ShortPath('Install Path:' + #32 + TEdit(Sender).Text, 55);
Моя фантазия небольшая и что со строкой делать я незнаю...

Отправлено: 03:31, 15-04-2013 | #187


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


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

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


saurn, Спасибо. Вставил ваш код и при компиляции выдает ошибку. Вот полностью мой код. Только цвет текста уже белый.


читать дальше »
[code]
const
dURL=2;

var
URLLabel,URLLabelShadow:TLabel;


procedure URLLabelClick(Sender: TObject);
var
ErrorCode:integer;
begin
ShellExec('open','http://Сайт/','','',SW_SHOWNORMAL,ewNoWait,ErrorCode);
end;

procedure URLLabelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
URLLabel.Top:=URLLabel.Top+dURL;
URLLabel.Left:=URLLabel.Left+dURL;
URLLabel.Font.Style:=URLLabel.Font.Style+[fsUnderline];
URLLabel.Font.Color:=clBlue;
URLLabelShadow.Visible:=False;
end;

procedure URLLabelMouseUp(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
begin
URLLabel.Top:=URLLabel.Top-dURL;
URLLabel.Left:=URLLabel.Left-dURL;
URLLabel.Font.Style:=URLLabel.Font.Style-[fsUnderline];
URLLabel.Font.Color:=clMaroon;
URLLabelShadow.Visible:=True;
end;

procedure InitializeWizard1;
begin
URLLabelShadow:=TLabel.Create(WizardForm);
with URLLabelShadow do begin
Top:=ScaleY(331);
Left:=ScaleX(25);
Caption:='http://Сайт/';
AutoSize:=True;
Parent:=WizardForm;
Transparent:=True;
Font.Color:=$969696;
Font.Size:=9;
Font.Style:=Font.Style+[fsBold];
end;
URLLabel:=TLabel.Create(WizardForm);
with URLLabel do begin
Top:=ScaleY(331)-dURL;
Left:=ScaleX(25)-dURL;
Caption:='http://Сайт/';
AutoSize:=True;
Parent:=WizardForm;
Cursor:=crHand;
Transparent:=True;
Font.Color:=clMaroon;
Font.Size:=9;
Font.Style:=Font.Style+[fsBold];
BringToFront;
OnClick:=@URLLabelClick;
OnMouseDown:=@URLLabelMouseDown;
OnMouseUp:=@URLLabelMouseUp;
end;
WizardForm.TypesCombo.ItemIndex:=0;
end;

const
Color = clblack;

procedure InitializeWizard2();
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.TypesCombo.Color:=Color;
WizardForm.WelcomeLabel1.Color:=Color;
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.UserInfoSerialLabel.Color:=Color;
WizardForm.UserInfoSerialEdit.Color:=Color;
WizardForm.TasksList.Color:=Color;
WizardForm.RunList.Color:=Color;
WizardForm.SelectDirBrowseLabel.Color:=Color;
WizardForm.SelectStartMenuFolderBrowseLabel.Color:=Color;
end;

procedure InitializeWizard();
begin
InitializeWizard1();
InitializeWizard2();
end;


Отправлено: 04:21, 15-04-2013 | #188


Аватара для Mailchik

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


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

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


Цитата Nightwishh:
При запуске инсталла выдаёт такую ошибку "could not call proc" »
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpSelectDir then
  begin
    DirEditOnChange(WizardForm.DirEdit);
  end;
end;
Вместо nil прописываете WizardForm.DirEdit. Или же:
Код: Выделить весь код
PathLabel.Caption := ShortPath('Install Path:' + #32 + WizardForm.DirEdit.Text, 55);
Вместо TEdit(Sender).Text прописываете WizardForm.DirEdit.Text, но лучше первый вариант.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:45, 15-04-2013 | #189


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


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

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


Mailchik, Спасибо большое, всё работает!

Отправлено: 08:38, 15-04-2013 | #190



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




 
Переход