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

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


Костя_Антонов@fb

Код: Выделить весь код
[Setup]
DefaultDirName={code:GetPreviousDir}

[Code]
function GetPreviousDir(AppInstallDir: String): String;
begin
  if RegKeyExists(HKLM, 'SOFTWARE\My,Program') then
  begin
    RegQueryStringValue(HKLM, 'SOFTWARE\My,Program', 'InstallLocation', AppInstallDir);
    Result := RemoveBackslash(AppInstallDir);
  end else
    Result := ExpandConstant('{pf}\My Program')
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:36, 14-04-2013 | #171



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

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


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


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

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


Спасибо за помощь

Отправлено: 00:49, 14-04-2013 | #172


Аватара для audiofeel

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


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

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


"Доброй" ночи всем. подскажите , посаветуйте в чем разница между этими двумя "примерами"
Код: Выделить весь код
procedure InitializeWizard();
begin 
  DirectX := TCheckBox.Create(WizardForm);
  With DirectX  do begin
    Parent   := WizardForm;
    Cursor   := crHand;
    TabOrder := 0;
    Checked  := False;
    SetBounds(50,166,15,15);
 end;                                                                                                                                         

и вот этим
procedure InitializeWizard();
begin 
  DirectX := TCheckBox.Create(WizardForm);
  DirectX.Parent   := WizardForm;
  DirectX.Cursor   := crHand;
  DirectX.TabOrder := 0;
  DirectX.SetBounds(50,166,15,15);
  DirectX.Checked  := False;
end;
просто хотелось знать в чем разница и что лучше (быстрее), просто заметил что когда диск занят чем то другим в верхнем углу проскакивает кнопка отмены на долю секунды ,причем не моя (не тот размер что в скрипте) и еще, очень много бевелов - как лучше сделать один на все пять страниц (просто меняя координаты для каждой или создавать для каждой BeveL2, BeveL3, и тд

Отправлено: 02:35, 14-04-2013 | #173


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


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

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


Подскажите, как перенести текст из "WizardForm.ComponentsDiskSpaceLabel" и "WizardForm.FinishedLabel" на Label? Пробовал через
Код: Выделить весь код
 Label1.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption и
Label2.Caption:= WizardForm.FinishedLabel.Caption
получается просто звёздочка на лейбле.
2) и что лучше
Код: Выделить весь код
SetBounds(ScaleX(23), ScaleY(102), ScaleX(150), ScaleY(22)); или
Left:= ScaleX(23);
Top:= ScaleY(102);
Width:= ScaleX(150);
Height:= ScaleY(22);
Спасибо!

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


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


Аватара для audiofeel

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


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

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


Nightwishh, Я делаю вот так, пробуй
Код: Выделить весь код
 Label1.Caption:= SetupMessage(msgComponentsDiskSpaceMBLabel);
Label2.Caption:= SetupMessage(msgFinishedLabel);

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

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

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


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


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

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


Цитата alert30:
а какая ошибка? Скрынчык дай хоть бы... »
Фото

Отправлено: 07:02, 14-04-2013 | #176


Ветеран


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

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


Цитата audiofeel:
"Доброй" ночи всем. подскажите , посаветуйте в чем разница между этими двумя "примерами" »
Я обычно использую первый вариант, когда для контрола требуется задать много параметров - это избавляет от лишней писанины. И вторым вариантом, если требуется изменить какой-то один параметр. А насчет быстроты, не знаю, ни разу не обращал внимания.
Кстати, координаты лучше указывать вот так:
Код: Выделить весь код
SetBounds(ScaleX(50), ScaleY(166), ScaleX(15), ScaleY(15));
В чем разница? Просто, координаты указаные без ScaleX, ScaleY будут являтся фактическими, и могут быть различные проблемы с отображением контролов, особенно, если в системе установлен размер текста не по умолчанию. Из-за не правильного указания координат обычно и возникают проблемы, типа: кнопка лежит не там, где задумано, текст вруг уехал в сторону и т.д. А так координаты контролов будут задаватся согласно размеру клиента.

Цитата Nightwishh:
и что лучше »
Первый вариант. Хотя бы тем, что сокращает колличество строк с четырех до одной.

neorom
Пробел потеряли.
Код: Выделить весь код
PercentsLabel.Caption := 'Установка игры: ' + NumToStr((Position*100)/Max) + '.' + Chr(48 + Position mod{вот тут пробела нехватает}10) + ' %';
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Тепер эсть так но не получаэтсь так

Отправлено: 12:47, 14-04-2013 | #178


Аватара для Johny777

Ветеран


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

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


Костя_Антонов@fb, saurn, (не забываем const AppInstallDir... во входных параметрах!), вот апдейт функции
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
AppId=123

DefaultDirName={code:GetPreviousDir}

[Code ]
function GetPreviousDir(const AppInstallDir: String): String;
begin
    RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'InstallLocation', Result);
    if Result <> '' then RemoveBackslash(Result) else Result := ExpandConstant('{pf}\My Program');
end;


заместо функции GetPreviousDir(...) проще всего получить пред. путь так:
читать дальше »
Код: Выделить весь код
AppName=My Program
AppVerName=My Program v.1.2

AppId=proto15
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1,InstallLocation|{pf}\Source Engine 15}
//DefaultDirName={reg:HKCU\Software\Valve\Steam,SourceModInstallPath|{pf}\valve\steam\SteamApps\SourceMods\Lost Coast}

тут 2 примера (верхний дал когда-то El Sanchez, а нижний выдрал для примера отсюда http://members.home.nl/albartus/issi...cript-1.07.iss ), каждая директива разделена |. Короче говоря, если первого пути который мы получаем из ключа reg:HKCU\Software\Valve\Steam , а в нём из записи SourceModInstallPath вернётся пустая строка '', то будет выведен путь справа от |, те путь по умолчанию
======================================================================

neorom, исправил, улучшил, замени у себя всю секцию кода на эту:

читать дальше »
Код: Выделить весь код
type
  TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord);
  
var
  TimerID: LongWord;
  PercentsLabel: TLabel;

function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32';
function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload';

Procedure MyTimerProc(h, msg, idevent, dwTime: Longword);
Begin
  if WizardForm.CurPageID = wpInstalling then with WizardForm.ProgressGauge do PercentsLabel.Caption:= Format('%s'#32'%s', ['Установка игры:', FormatFloat('0.0 %', (Position*100)/Max)]);
End;

procedure DeinitializeSetup();
begin
  KillTimer(0, TimerID);
end;

procedure InitializeWizard();
begin
  PercentsLabel:= TLabel.Create(WizardForm);
  with PercentsLabel do
  begin
    Left:= WizardForm.DirEdit.Left;
    Top:= ScaleY(WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + 30);
    Width:= WizardForm.StatusLabel.Width;
    Height:= WizardForm.StatusLabel.Height;
    AutoSize:= False;
    Transparent := True;
    Alignment := taCenter;
    Font.Style:= [fsBold, fsItalic];
    Font.Size:= 14;
    Font.Name:= 'Times New Roman';
    Font.Color:= ClMaroon;
    Parent:= WizardForm.InstallingPage;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then TimerID:= SetTimer(0, 0, 500 {Установка игры}, WrapTimerProc(@MyTimerProc, 4));
end;
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Изображения
Тип файла: png 1.png
(33.8 Kb, 12 просмотров)

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

procedure InitializeWizard2();
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.visible:=False;
WizardForm.BeveledLabel.visible:=False;
WizardForm.Bevel1.visible:=False;
end;

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



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




 
Переход