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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;
    Предыдущая версия: 5.3.0 [07.04.2009] - Скачать (зеркало) | Русификатор (зеркало);

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

  • 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.3 [11.09.2009] - Скачать;


Ссылка на архив предыдущей темы (также можно скачать из вложения)

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


Отправлено: 22:06, 23-08-2009

 

Аватара для Habetdin


Автор проектов


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

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


МИШАНЧИК, пример:
Код: Выделить весь код
function InitializeSetup(): Boolean;
begin 
  RegDeleteKeyIncludingSubkeys(HKLM, 'Software\My Program\Cache'); 
  Result:= True;
end;
P.S.: пишите в PM, если нужен скрипт USB Safely Remove

-------
Рекомендую: $25 на тест виртуального сервера (VPS) за регистрацию по ссылке

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

Отправлено: 16:27, 11-12-2009 | #631



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

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


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


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

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


Кто может помочь с этим кодом Кнопки внизу были , было прозрачно а не бело
читать дальше »
[Setup]
AppName=Status Panel
AppVerName=Status Panel
DefaultDirName={pf}\Test
DefaultGroupName=Status Panel
WizardImageFile=compiler:WizModernImage-IS.bmp
OutputDir=userdocs:.
OutputBaseFilename=status_panel
DisableReadyPage=True
[Files]
; Test
Source: "{sys}\*.dll"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall;
[Icons]
Name: "{group}\Удалить StatusPanel"; Filename: "{uninstallexe}";
[code]
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';
var
Welcome, Edit1, Edit2, Ready1, Ready2,
Setup1, Setup2, Finish1, Finish2: TLabel;
procedure InitializeWizard();
begin
WizardForm.ClientWidth := ScaleX(750);
WizardForm.ClientHeight := ScaleY(500);
WizardForm.Bevel.Hide;
WizardForm.Bevel1.Hide;
WizardForm.MainPanel.Hide;
WizardForm.WizardBitmapImage.Left := ScaleX(0);
WizardForm.WizardBitmapImage.Top := ScaleY(0);
WizardForm.WizardBitmapImage.Width := WizardForm.Width;
WizardForm.WizardBitmapImage.Height := WizardForm.Height;
WizardForm.WizardBitmapImage.Parent := WizardForm;
WizardForm.WizardBitmapImage2.Hide;
Welcome := TLabel.Create(WizardForm);
Welcome.Top := ScaleY(45);
Welcome.Caption := 'Приветствие';
Welcome.Transparent := True;
Welcome.Parent := WizardForm;
Edit1 := TLabel.Create(WizardForm);
Edit1.Left := WizardForm.ClientWidth / 5;
Edit1.Top := ScaleY(45);
Edit1.Width := WizardForm.ClientWidth / 5;
Edit1.AutoSize := False;
Edit1.Caption := '|';
Edit1.Transparent := True;
Edit1.Parent := WizardForm;
Edit2 := TLabel.Create(WizardForm);
Edit2.Top := ScaleY(45);
Edit2.Caption:= 'Параметры';
Edit2.Transparent := True;
Edit2.Parent := WizardForm;
Ready1 := TLabel.Create(WizardForm);
Ready1.Left := Edit1.Left + Edit1.Width;
Ready1.Top := ScaleY(45);
Ready1.Width := WizardForm.ClientWidth / 5;
Ready1.AutoSize := False;
Ready1.Caption := '|';
Ready1.Transparent := True;
Ready1.Parent := WizardForm;
Ready2 := TLabel.Create(WizardForm);
Ready2.Top := ScaleY(45);
Ready2.Caption := 'Меню "Пуск"';
Ready2.Transparent := True;
Ready2.Parent := WizardForm;
Setup1 := TLabel.Create(WizardForm);
Setup1.Left := Ready1.Left + Ready1.Width;
Setup1.Top := ScaleY(45);
Setup1.Width := WizardForm.ClientWidth / 5;
Setup1.AutoSize := False;
Setup1.Caption := '|';
Setup1.Transparent := True;
Setup1.Parent := WizardForm;
Setup2 := TLabel.Create(WizardForm);
Setup2.Top := ScaleY(45);
Setup2.Caption := 'Установка';
Setup2.Transparent := True;
Setup2.Parent := WizardForm;
Finish1 := TLabel.Create(WizardForm);
Finish1.Left := Setup1.Left + Setup1.Width;
Finish1.Top := ScaleY(45);
Finish1.Width := WizardForm.ClientWidth / 5;
Finish1.AutoSize := False;
Finish1.Caption := '|';
Finish1.Transparent := True;
Finish1.Parent := WizardForm;
Finish2 := TLabel.Create(WizardForm);
Finish2.Top := ScaleY(45);
Finish2.Caption := 'Готово';
Finish2.Transparent := True;
Finish2.Parent := WizardForm;
WizardForm.BackButton.Top := WizardForm.BackButton.Top + ScaleY(110);
WizardForm.NextButton.Top := WizardForm.NextButton.Top + ScaleY(110);
WizardForm.CancelButton.Top := WizardForm.CancelButton.Top + ScaleY(110);
WizardForm.OuterNotebook.Left := WizardForm.Width / 2 - WizardForm.OuterNotebook.Width / 2;
WizardForm.OuterNotebook.Top := ScaleY(105);
WizardForm.InnerNotebook.Top := ScaleY(10);
WizardForm.Left := GetSystemMetrics(0) / 2 - WizardForm.Width / 2;
WizardForm.Top := GetSystemMetrics(1) / 2 - WizardForm.Height / 2;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
Welcome.Font.Color := clSilver;
Edit1.Font.Color := clSilver;
Edit2.Font.Color := clSilver;
Ready1.Font.Color := clSilver;
Ready2.Font.Color := clSilver;
Setup1.Font.Color := clSilver;
Setup2.Font.Color := clSilver;
Finish1.Font.Color := clSilver;
Finish2.Font.Color := clSilver;
Welcome.Left := WizardForm.ClientWidth / 5 / 2 - Welcome.Width / 2;
Edit2.Left := Edit1.Left + Edit1.Width / 2 - Edit2.Width / 2;
Ready2.Left := Ready1.Left + Ready1.Width / 2 - Ready2.Width / 2;
Setup2.Left := Setup1.Left + Setup1.Width / 2 - Setup2.Width / 2;
Finish2.Left := Finish1.Left + Finish1.Width / 2 - Finish2.Width / 2;
if CurPageID = wpWelcome then
begin
Welcome.Font.Color := clWhite;
Edit1.Font.Color := clWhite;
end;
if CurPageID = wpSelectDir then
begin
Edit1.Font.Color := clWhite;
Edit2.Font.Color := clWhite;
Ready1.Font.Color := clWhite;
end;
if CurPageID = wpSelectProgramGroup then
begin
Ready1.Font.Color := clWhite;
Ready2.Font.Color := clWhite;
Setup1.Font.Color := clWhite;
WizardForm.NextButton.Caption := 'Установить';
end;
if CurPageID = wpInstalling then
begin
Setup1.Font.Color := clWhite;
Setup2.Font.Color := clWhite;
Finish1.Font.Color := clWhite;
end;
if CurPageID = wpFinished then
begin
Finish1.Font.Color := clWhite;
Finish2.Font.Color := clWhite;
end;
end;

Отправлено: 17:31, 11-12-2009 | #632


Ветеран


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

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


Habetdin, спасибо!
Цитата Habetdin:
P.S.: пишите в PM, если нужен скрипт USB Safely Remove »
Не, я уже собрал, спасибо. Это я с неро вожусь.

Serega, подскажите пожалуйста что, я неправильно делаю.
Хочу убрать последнюю страницу и на предпоследней заменить "Далее" на "Установить".
Никакого кода кроме указанного ниже нет.
читать дальше »

[Setup]
DisableReadyPage=yes
[_Code]
procedure CurPageChanged(CurPageID: Integer);
begin
CurPageChanged(CurPageID);
if CurPageID = wpSelectTasks then // удаляет последнюю страницу
WizardForm.NextButton.Caption:= 'Установить'; // меняет кнопку "Далее" на предпоследней странице на "Установить"
CurPageChanged(CurPageID);
end;

Цитата МИШАНЧИК:
Serega, подскажите пожалуйста что, я неправильно делаю »
P.S.Разобрался.

Последний раз редактировалось МИШАНЧИК, 12-12-2009 в 11:00.


Отправлено: 04:20, 12-12-2009 | #633


Ветеран


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

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


Serega, подскажите пожалуйста!
Цитата Serega:
Хочу привлечь внимание всех!!!
В расширенной версии от Restools сделали возможность редактирования форм, т.е. вы можете изменить страницу инсталлятора по своему усмотрению... »
Редактирую(растягиваю картинку) на вкладке WizardFormDesigner, получается изображение как-бы на всю страницу , в скрипт дописывается код автоматом, а при компиляции ничего не меняется(как по умолчанию).
Почему?

Отправлено: 13:10, 12-12-2009 | #634


Ветеран


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

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


Цитата МИШАНЧИК:
Почему? »
Добавьте название процедуры созданной автоматом в procedure InitializeWizard();
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Code]
{ RedesignWizardFormBegin } // Don't remove this line!
// Don't modify this section. It is generated automatically.
var
  NewButton1: TNewButton;

procedure RedesignWizardForm;
begin
  { NewButton1 }
  NewButton1 := TNewButton.Create(WizardForm);
  with NewButton1 do
  begin
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(288);
    Top := ScaleY(200);
    Width := ScaleX(75);
    Height := ScaleY(25);
    Caption := 'NewButton1';
    TabOrder := 2;
  end;

{ ReservationBegin }
  // This part is for you. Add your specialized code here.

{ ReservationEnd }
end;
// Don't modify this section. It is generated automatically.
{ RedesignWizardFormEnd } // Don't remove this line!

procedure InitializeWizard();
begin
  RedesignWizardForm;
end;

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

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

Отправлено: 13:32, 12-12-2009 | #635


Ветеран


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

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


Цитата YURSHAT:
как правильно перечислить страницы »
Если не хочется перечислять все страницы последовательно, т.е.:
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
  WizardForm.WelcomeLabel1.Parent:= WizardForm.SelectDirPage;
  if CurPageID = wpSelectProgramGroup then
  WizardForm.WelcomeLabel1.Parent:= WizardForm.SelectDirPage;
end;
то всё равно нужно написать функцию, которая будет возвращать название страниц:
Пример
Код: Выделить весь код
function DetectPage(CurPageID: Integer): TNewNotebookPage;
begin
  case CurPageID of
    wpWelcome: Result:= WizardForm.WelcomePage;
    wpLicense: Result:= WizardForm.LicensePage;
    wpPassword: Result:= WizardForm.PasswordPage;
    wpInfoBefore: Result:= WizardForm.InfoBeforePage;
    wpUserInfo: Result:= WizardForm.UserInfoPage;
    wpSelectDir: Result:= WizardForm.SelectDirPage;
    wpSelectComponents: Result:= WizardForm.SelectComponentsPage;
    wpSelectProgramGroup: Result:= WizardForm.SelectProgramGroupPage;
    wpSelectTasks: Result:= WizardForm.SelectTasksPage;
    wpReady: Result:= WizardForm.ReadyPage;
    wpPreparing: Result:= WizardForm.PreparingPage;
    wpInstalling: Result:= WizardForm.InstallingPage;
    wpInfoAfter: Result:= WizardForm.InfoAfterPage;
    wpFinished: Result:= WizardForm.FinishedPage;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if (CurPageID = wpSelectDir) or (CurPageID = wpSelectProgramGroup) then
  WizardForm.WelcomeLabel1.Parent:= DetectPage(CurPageID);
end;

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

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

Отправлено: 14:09, 12-12-2009 | #636


Ветеран


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

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


Цитата lmiol:
как сделать чтобы если виста то файлы автоматом в одну папку а если хр то в другую инсталились »
Пример
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\{code:DetectWindows}
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

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

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Code]
function DetectWindows(s: string): string;
var
  SubKeyName, ResultStr: string;
begin
  SubKeyName:= 'Software\Microsoft\Windows NT\CurrentVersion';
  RegQueryStringValue(HKLM, SubKeyName, 'ProductName', ResultStr);
  if Pos('XP', ResultStr) > 0 then
    Result:= 'XP'
  else
  if Pos('Vista', ResultStr) > 0 then
    Result:= 'Vista'
  else Result:= 'My Program';
end;

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

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

Отправлено: 14:52, 12-12-2009 | #637


Ветеран


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

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


Serega, скажите пожалуйста, а можно ли этим способом растянув картинку на весь инсталятор сделать чтоб текст был на картинке, а не на белом фоне?

Отправлено: 15:23, 12-12-2009 | #638


Аватара для YURSHAT

Старожил


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

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


Serega, огромнейшее Вам СПАСИБО за помощь!!!

-------
Если я знаю, что знаю мало, я добьюсь того, чтобы знать больше... В.И. Ленин
Krinkels.org - сжатие данных и создание инсталляторов


Отправлено: 16:29, 12-12-2009 | #639


Ветеран


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

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


Цитата МИШАНЧИК:
а можно ли этим способом растянув картинку на весь инсталятор сделать чтоб текст был на картинке, а не на белом фоне? »
Если я правильно вас понял, то вы имеете ввиду белый фон текста TNewStaticText?
Если да, то вам придётся прятать все стандартные TNewStaticText, а заместо них создавать TLabel, со свойством Transparent:= True;

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

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

Отправлено: 17:02, 12-12-2009 | #640



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход