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

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

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

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

Ветеран


Contributor


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


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

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


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


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


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Забанен


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

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


Немного сложный вопрос, интересует вот что:
В сетап имеется
Код: Выделить весь код
[Setup]
AppName=Имя программы
DefaultDirName={pf}\Папка программы
DefaultGroupName=Папка в меню пуск
и есть компоненты
Код: Выделить весь код
[Components]
Name: A; Description: Программа 1
Name: B; Description: Программа 2
как сделать так, чтобы например выбираю компонент Программа 1, то при установке, то что в AppName, в DefaultDirName и в DefaultGroupName, название Имя программы, папка в PF Папка программы и папка в пуске Папка в меню пуск заменялось на Программа 1, если выбираю компонент Программа 2, то Имя программы, Папка программы и папка в пуск Папка в меню пуск заменялось на Программа 2, возможно ли такое?

Отправлено: 16:25, 24-02-2012 | #891



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

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


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Devils Night
AppName - это опознаватель программы которую ты ставишь для системы
DefaultGroupName и DefaultDirName объявляются раньше страницы компонентов
Так что никак

Если бы передо мной стояла такая задача, я бы сделал 3 раздельных инсталлера: для Программа 1, для Программа 2 и третий со списком компонентов из "Программа 1, Программа 2" и выбранную прогу ставил втихую

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

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

Отправлено: 16:31, 24-02-2012 | #892


Аватара для Johny777

Ветеран


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

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


R.i.m.s.k.y., nik1967,
спасибо
вот так всё супер
проверил
читать дальше »

Код: Выделить весь код
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=.

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

[Run]
Filename: {src}\Redist\DirectX10\DXSETUP.exe; Parameters: /silent; WorkingDir: {src}\Redist\DirectX10; StatusMsg: óñòàíîâêà äèðåêòà; Flags: skipifdoesntexist waituntilterminated; Check: MakeQuickLaunchIcon

[,Code]
var
QuickLaunchIcon: TCheckBox;

function MakeQuickLaunchIcon: Boolean;
begin
    Result:=QuickLaunchIcon.Checked;
end;

procedure InitializeWizard();
begin
If FileExists(ExpandConstant('{src}\Redist\DirectX10\DXSETUP.exe')) then
begin
QuickLaunchIcon := TCheckBox.Create(WizardForm);
 with QuickLaunchIcon do
  begin
    Parent := WizardForm.SelectDirPage;
    Caption := 'Ñîçäàòü çíà÷îê â Ïàíåëè áûñòðîãî çàïóñêà';
    Left := ScaleX(0);
//    Left := WizardForm.DirEdit.Top + 100;
    Top := WizardForm.DirEdit.Top + 117;
    Width := ScaleX(300);
    Height := ScaleY(15);
    TabOrder := 0;
    Checked := False;
   end;
 end;
end;

дальше по аналогии сделаю но с учётом своих названий чекбоксов

Devils Night,
как вариант можно сделать авторан состоящий из одной страницы с двумя переключателями, который после себя запускает одну из 2-х из внешней папки или копирует из самого себя в tmp
у обеих программ сделать полуодинаковые
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID") }_is1,InstallLocation|{pf}\program1}
DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID") }_is1,InstallLocation|{pf}\program2}
и одинаковые
AppId=p12
AppId=p12
AppName=program1,2 - тоже одинаковые, но скрыть их на странице приветствия например и заменить на свои наименования
а в секции одной [InstallDelete] вписать всё, что нужно удалть от другой и наоборот (ярлыки, файлы в (app) итд)

____________________________________________
скажите пожалуйста
если один файл относится к многим чекбоксам, то нужно писать так?
[Files]
.....; Check: 1 and 2 and 3
или так
.....; Check: 1 or 2 or 3

Последний раз редактировалось Johny777, 25-02-2012 в 14:40.

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

Отправлено: 20:06, 24-02-2012 | #893


Забанен


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

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


R.i.m.s.k.y.
Цитата R.i.m.s.k.y.:
Так что никак »
Плохо.
Цитата R.i.m.s.k.y.:
и третий со списком компонентов из "Программа 1, Программа 2 »
Две программмы в одну программу не вариант.

Johny777
Цитата Johny777:
как вариант можно сделать авторан »
Только и остаётся, это как раз вариант.
Цитата Johny777:
с двумя переключателями, который после себя запускает одну из 2-х из внешней папки »
Что то я не догнал.


В моём случае скорее подошло бы так:
Autorun

Код: Выделить весь код
[Setup]
AppName=AutoRUN
VersionInfoDescription=AutoRUN
VersionInfoProductName=AutoRUN
AppVerName=AutoRUN
VersionInfoProductVersion=1.0.0.0
VersionInfoVersion=1.0.0.0
VersionInfoCompany=john
VersionInfoCopyright=Copyright © John
CreateAppDir=no
OutputDir=.
OutputBaseFilename=Autorun
;SetupIconFile=Icon.ico

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

[Files]
Source: 1.bmp; Flags: dontcopy

[Messages]
SetupAppTitle=AutoRUN

[ Code]
const
  BM_CLICK    = $00F5;

var
  AutoRun: TSetupForm;
  img1: TBitmapImage;
  PlayButton, InstallButton, UninstallButton, ExitButton: TButton;
  AppPath,UninsPath: string;
  ResultCode: Integer;
procedure CurPageChanged(CurPageID: Integer);
begin
  If CurPageID=wpWelcome then
  SendMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False
Cancel:=True
end;

procedure InstallButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  Exec(ExpandConstant('{src}\Setup.exe'),'','',SW_SHOW,ewNoWait,ResultCode)
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure ExitButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure UninstallButtonClick(Sender: TObject);
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    UninsPath:=RemoveQuotes(UninsPath)
    Exec(UninsPath,'','',SW_SHOWNORMAL,ewNoWait,ResultCode)
    AutoRun.Close;
    PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
  end
end;

procedure CreateAutoRun;
begin
  //AutoRun
  AutoRun := CreateCustomForm;
  with AutoRun do begin
    Left := 498;
    Top := 75;
    Width := 495;
    Height := 200;
    BorderIcons := [];
    BorderStyle:=bsToolWindow //(bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin)
    Color := clBtnFace;
    Font.Color := clWindowText;
    Font.Height := -11;
    Font.Name := 'MS Sans Serif';
    Font.Style := [];
    Position := poScreenCenter;
    Caption:='AutoRUN'
  end;
  //img
  img1 := TBitmapImage.Create(AutoRun);
  ExtractTemporaryFile('1.bmp');
  with img1 do begin
    Parent := AutoRun;
    Left := 0;
    Stretch:= true;
    Top := 0;
    Width := Autorun.Width;
    Height := Autorun.Height;
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
  end;
  //InstallButton
  InstallButton:= TButton.Create(AutoRun);
  with InstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 80;
    Width := 150;
    Height := 22;
    Caption:= 'Установить';
    Cursor:= crHand;
    OnClick := @InstallButtonClick;
  end;
  //UninstallButton
  UninstallButton:= TButton.Create(AutoRun);
  with UninstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 110;
    Width := 150;
    Height := 22;
    Caption:= 'Удалить';
    Cursor:= crHand;
    OnClick := @UninstallButtonClick;
  end;
  //ExitButton
  ExitButton:= TButton.Create(AutoRun);
  with ExitButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 140;
    Width := 150;
    Height := 22;
    Caption:= 'Выход';
    Cursor:= crHand;
    OnClick := @ExitButtonClick;
  end;

  if not RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=true;
    UninstallButton.Enabled:=false;
  end;
  if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=false;
    UninstallButton.Enabled:=true;
  end;

  AutoRun.ShowModal;
end;

procedure InitializeWizard;
begin
  CreateAutoRun;
end;
+
RadioButton

Код: Выделить весь код
[ Code]var
  RadioButton1: TRadioButton;
  RadioButton2: TRadioButton;
  RadioButton3: TRadioButton;

procedure RedesignWizardForm;
begin
  RadioButton1 := TRadioButton.Create(WizardForm);
  with RadioButton1 do
  begin
    Name := 'Button1';
    Parent := WizardForm.SelectTasksPage;
    Left := 40;
    Top := 80;
    Width := 113;
    Height := 17;
  end;

  RadioButton2 := TRadioButton.Create(WizardForm);
  with RadioButton2 do
  begin
    Name := 'Button2';
    Parent := WizardForm.SelectTasksPage;
     Left := 40;
    Top := 110;
    Width := 113;
    Height := 17;
  end;

  RadioButton3 := TRadioButton.Create(WizardForm);
  with RadioButton3 do
  begin
    Name := 'Button3';
    Parent := WizardForm.SelectTasksPage;
    Left := 40;
    Top := 140;
    Width := 113;
    Height := 17;
  end;

  RadioButton1.TabOrder := 2;
  RadioButton2.TabOrder := 3;
  RadioButton3.TabOrder := 4;
end;

procedure InitializeWizard;
begin
  RedesignWizardForm;
end;
но чтоб каждый RadioButton выбирался как исключительным (не всё вместе), но чтоб все 3 были привязаны к одной кнопки установить, а вот как это сделать я незнаю.

Последний раз редактировалось Devils Night, 25-02-2012 в 18:01.


Отправлено: 14:37, 25-02-2012 | #894


Аватара для Johny777

Ветеран


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

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


Devils Night,
вот "автозапуск"
ищет во внешней папке program
setup_1.exe
setup_2.exe
setup_3.exe
если одного из них нет, то нет переключателя
читать дальше »
Код: Выделить весь код
;      Скрипт создан с помощью
; IS GameScript Generator by South
;   специально для www.csmania.ru

#define MyAppName "Autorun"

[Setup]
SourceDir=.
OutputDir=Setup
AppName={#MyAppName}

AppVerName={#MyAppName}
AppVersion={#MyAppName}
CreateAppDir=false
OutputBaseFilename={#MyAppName}
Uninstallable=false
//SetupIconFile=hl2.ico
ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage
UsePreviousLanguage=no

DisableProgramGroupPage=yes
DisableWelcomePage=yes
DisableDirPage=true

DisableFinishedPage=yes

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

[Messages]
Russian.SetupWindowTitle=%1
Russian.WizardReady=что установить?
Russian.ReadyLabel2b=

[CustomMessages]
Russian.go=Установить
English.go=Install
Russian.exit=Закрыть
English.exit=Close

[run]
Filename: {src}\program\setup_1.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: X;
Filename: {src}\program\setup_2.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Y;
Filename: {src}\program\setup_2.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Z;


[----Code]

var
  install_1: TNewRadioButton;
  install_2: TNewRadioButton;
  install_3: TNewRadioButton;

function X: Boolean;
 begin
 If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
  Result:=install_1.Checked;
   end;
    function Y: Boolean;
     begin
      If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
       Result:=install_2.Checked;
        end;
         function Z: Boolean;
          begin
           If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
            Result:=install_3.Checked;
             end;



           
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;

procedure InitializeWizard();
begin
WizardForm.InnerPage.Color := clInfoBk;
 WizardForm.Color := clActiveCaption;
  WizardForm.MainPanel.Color := clActiveCaption;
   WizardForm.WizardSmallBitmapImage.Visible := False;
    WizardForm.BorderStyle := bsToolWindow;



   If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
     begin
     install_1 := TNewRadioButton.Create(WizardForm);
        with install_1 do
        begin
          Name := 'install_1';
          Parent := WizardForm.ReadyPage;
          Left := ScaleX(16);
          Top := ScaleY(24);
          Width := ScaleX(113);
          Height := ScaleY(17);
          Caption := 'program 1';

        end;
     end;
   If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
     begin
     install_2 := TNewRadioButton.Create(WizardForm);
        with install_2 do
        begin
          Name := 'install_2';
          Parent := WizardForm.ReadyPage;
          Left := ScaleX(80);
          Top := ScaleY(64);
          Width := ScaleX(113);
          Height := ScaleY(17);
          Caption := 'program 2';

        end;
     end;
   If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
     begin
     install_3 := TNewRadioButton.Create(WizardForm);
        with install_3 do
        begin
          Name := 'install_3';
          Parent := WizardForm.ReadyPage;
          Left := ScaleX(136);
          Top := ScaleY(112);
          Width := ScaleX(113);
          Height := ScaleY(17);
          Caption := 'program 3';

        end;
     end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpReady then
    begin
    WizardForm.PageDescriptionLabel.Hide;
      WizardForm.NextButton.Caption:= ExpandConstant('{cm:go}');
      WizardForm.CancelButton.Caption:= ExpandConstant('{cm:exit}');
    end;
end;

Последний раз редактировалось Johny777, 25-02-2012 в 19:42.

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

Отправлено: 18:58, 25-02-2012 | #895


Аватара для Johny777

Ветеран


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

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


не успел удалить првый и ты его же и взял
я переделал
в первом ошибки были
сейчас протестировал
всё работает
попробуй!
(пост выше)
или вот архивом
http://rghost.ru/36704123

Последний раз редактировалось Johny777, 25-02-2012 в 19:47.

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

Отправлено: 19:41, 25-02-2012 | #896


Забанен


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

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


Цитата Johny777:
попробуй! »
Всё конечно круто, но, где надпись "что установить? " идёт полоска, да и сама надпись ненужны, а так же внизу кнопки "Установить", "Закрыть", полоска тоже не нужна. Нужен фон картинка, желательно в PNG.

Что не так, как сделать?
читать дальше »
Код: Выделить весь код
[Setup]
AppName=AutoRUN
VersionInfoDescription=AutoRUN
VersionInfoProductName=AutoRUN
AppVerName=AutoRUN
VersionInfoProductVersion=1.0.0.0
VersionInfoVersion=1.0.0.0
VersionInfoCompany=john
VersionInfoCopyright=Copyright © John
CreateAppDir=no
OutputDir=.
OutputBaseFilename=Autorun
;SetupIconFile=Icon.ico

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

[Run]
Filename: {src}\program\setup_1.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: X;
Filename: {src}\program\setup_2.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Y;
Filename: {src}\program\setup_3.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Z;

[Files]
Source: 1.bmp; Flags: dontcopy

[Messages]
SetupAppTitle=AutoRUN

[ Code]
const
  BM_CLICK    = $00F5;

var
  AutoRun: TSetupForm;
  img1: TBitmapImage;
  PlayButton, InstallButton, UninstallButton, ExitButton: TButton;
  AppPath,UninsPath: string;
  ResultCode: Integer;
  
  
procedure CurPageChanged(CurPageID: Integer);
begin
  If CurPageID=wpWelcome then
//  if CurPageID=wpReady then   //
//    begin
//    WizardForm.PageDescriptionLabel.Hide;
//      WizardForm.NextButton.Caption:= ExpandConstant('{cm:go}');
//      WizardForm.CancelButton.Caption:= ExpandConstant('{cm:exit}');
//    end;
  SendMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False
Cancel:=True
end;

procedure InstallButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  Exec(ExpandConstant('{src}\Setup.exe'),'','',SW_SHOW,ewNoWait,ResultCode)
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure ExitButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure UninstallButtonClick(Sender: TObject);
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    UninsPath:=RemoveQuotes(UninsPath)
    Exec(UninsPath,'','',SW_SHOWNORMAL,ewNoWait,ResultCode)
    AutoRun.Close;
    PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
  end
end;

procedure CreateAutoRun;
begin
  //AutoRun
  AutoRun := CreateCustomForm;
  with AutoRun do begin
    Left := 498;
    Top := 75;
    Width := 495;
    Height := 200;
    BorderIcons := [];
    BorderStyle:=bsToolWindow //(bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin)
    Color := clBtnFace;
    Font.Color := clWindowText;
    Font.Height := -11;
    Font.Name := 'MS Sans Serif';
    Font.Style := [];
    Position := poScreenCenter;
    Caption:='AutoRUN'
  end;
  //img
  img1 := TBitmapImage.Create(AutoRun);
  ExtractTemporaryFile('1.bmp');
  with img1 do begin
    Parent := AutoRun;
    Left := 0;
    Stretch:= true;
    Top := 0;
    Width := Autorun.Width;
    Height := Autorun.Height;
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
  end;
  //InstallButton
  InstallButton:= TButton.Create(AutoRun);
  with InstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 80;
    Width := 150;
    Height := 22;
    Caption:= 'Install';
    Cursor:= crHand;
    OnClick := @InstallButtonClick;
  end;
  //UninstallButton
  UninstallButton:= TButton.Create(AutoRun);
  with UninstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 110;
    Width := 150;
    Height := 22;
    Caption:= 'Удалить';
    Cursor:= crHand;
    OnClick := @UninstallButtonClick;
  end;
  //ExitButton
  ExitButton:= TButton.Create(AutoRun);
  with ExitButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 140;
    Width := 150;
    Height := 22;
    Caption:= 'Выход';
    Cursor:= crHand;
    OnClick := @ExitButtonClick;
  end;

  if not RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=true;
    UninstallButton.Enabled:=false;
  end;
  if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=false;
    UninstallButton.Enabled:=true;
  end;

  AutoRun.ShowModal;
end;




var
  RadioButton1: TRadioButton;
  RadioButton2: TRadioButton;
  RadioButton3: TRadioButton;
  
function X: Boolean;
 begin
 If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
  Result:=RadioButton1.Checked;
   end;
    function Y: Boolean;
     begin
      If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
       Result:=RadioButton2.Checked;
        end;
         function Z: Boolean;
          begin
           If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
            Result:=RadioButton3.Checked;
             end;


//**********************Закоментировал дубль*****************************
//procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
//begin
//Confirm:=False;
//Cancel:=True;
//end;
//**********************Закоментировал дубль*****************************

procedure InitializeWizard();
begin
WizardForm.InnerPage.Color := clInfoBk;
WizardForm.Color := clActiveCaption;
WizardForm.MainPanel.Color := clActiveCaption;
WizardForm.WizardSmallBitmapImage.Visible := False;
WizardForm.BorderStyle := bsToolWindow;
    
    
    
If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
  begin
  RadioButton1 := TRadioButton.Create(WizardForm);
     with RadioButton1 do
     begin
       Name := 'RadioButton1';
       Parent := WizardForm.ReadyPage;
       Left := 40;
       Top := 80;
       Width := 113;
       Height := 17;
       Caption := 'program 1';
     end;
  end;

If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
   begin
     RadioButton2 := TRadioButton.Create(WizardForm);
      with RadioButton2 do
      begin
      Name := 'RadioButton2';
      Parent := WizardForm.ReadyPage;
      Left := 40;
      Top := 110;
      Width := 113;
      Height := 17;
      Caption := 'program 2';
     end;
   end;

   If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
     begin
     RadioButton3 := TRadioButton.Create(WizardForm);
        with RadioButton3 do
        begin
          Name := 'RadioButton3';
          Parent := WizardForm.ReadyPage;
    Left := 40;
    Top := 140;
    Width := 113;
    Height := 17;
    Caption := 'program 3';
        end;
     end;
     CreateAutoRun;
end;


Нужен авторан на основе:
читать дальше »
Код: Выделить весь код
[Setup]
AppName=AutoRUN
VersionInfoDescription=AutoRUN
VersionInfoProductName=AutoRUN
AppVerName=AutoRUN
VersionInfoProductVersion=1.0.0.0
VersionInfoVersion=1.0.0.0
VersionInfoCompany=john
VersionInfoCopyright=Copyright © John
CreateAppDir=no
OutputDir=.
OutputBaseFilename=Autorun
;SetupIconFile=Icon.ico

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

[Files]
Source: 1.bmp; Flags: dontcopy

[Messages]
SetupAppTitle=AutoRUN

[ Code]
const
  BM_CLICK    = $00F5;

var
  AutoRun: TSetupForm;
  img1: TBitmapImage;
  PlayButton, InstallButton, UninstallButton, ExitButton: TButton;
  AppPath,UninsPath: string;
  ResultCode: Integer;
procedure CurPageChanged(CurPageID: Integer);
begin
  If CurPageID=wpWelcome then
  SendMessage(WizardForm.NextButton.Handle, BM_CLICK, 0, 0);
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False
Cancel:=True
end;

procedure InstallButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  Exec(ExpandConstant('{src}\Setup.exe'),'','',SW_SHOW,ewNoWait,ResultCode)
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure ExitButtonClick(Sender: TObject);
var
  CurPageID: Integer;
begin
  AutoRun.Close;
  PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
end;

procedure UninstallButtonClick(Sender: TObject);
begin
if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    UninsPath:=RemoveQuotes(UninsPath)
    Exec(UninsPath,'','',SW_SHOWNORMAL,ewNoWait,ResultCode)
    AutoRun.Close;
    PostMessage(WizardForm.CancelButton.Handle, BM_CLICK, 0, 0);
  end
end;

procedure CreateAutoRun;
begin
  //AutoRun
  AutoRun := CreateCustomForm;
  with AutoRun do begin
    Left := 498;
    Top := 75;
    Width := 495;
    Height := 200;
    BorderIcons := [];
    BorderStyle:=bsToolWindow //(bsNone, bsSingle, bsSizeable, bsDialog, bsToolWindow, bsSizeToolWin)
    Color := clBtnFace;
    Font.Color := clWindowText;
    Font.Height := -11;
    Font.Name := 'MS Sans Serif';
    Font.Style := [];
    Position := poScreenCenter;
    Caption:='AutoRUN'
  end;
  //img
  img1 := TBitmapImage.Create(AutoRun);
  ExtractTemporaryFile('1.bmp');
  with img1 do begin
    Parent := AutoRun;
    Left := 0;
    Stretch:= true;
    Top := 0;
    Width := Autorun.Width;
    Height := Autorun.Height;
    Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
  end;
  //InstallButton
  InstallButton:= TButton.Create(AutoRun);
  with InstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 80;
    Width := 150;
    Height := 22;
    Caption:= 'Установить';
    Cursor:= crHand;
    OnClick := @InstallButtonClick;
  end;
  //UninstallButton
  UninstallButton:= TButton.Create(AutoRun);
  with UninstallButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 110;
    Width := 150;
    Height := 22;
    Caption:= 'Удалить';
    Cursor:= crHand;
    OnClick := @UninstallButtonClick;
  end;
  //ExitButton
  ExitButton:= TButton.Create(AutoRun);
  with ExitButton do begin
    Parent:= AutoRun;
    Left := 300;
    Top := 140;
    Width := 150;
    Height := 22;
    Caption:= 'Выход';
    Cursor:= crHand;
    OnClick := @ExitButtonClick;
  end;

  if not RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=true;
    UninstallButton.Enabled:=false;
  end;
  if RegQueryStringValue(HKLM, 'SOFTWARE\Game','UninstallString', UninsPath) then
  begin
    InstallButton.Enabled:=false;
    UninstallButton.Enabled:=true;
  end;

  AutoRun.ShowModal;
end;

procedure InitializeWizard;
begin
  CreateAutoRun;
end;
но с RadioButton.

Отправлено: 21:10, 25-02-2012 | #897


Аватара для Johny777

Ветеран


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

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


Devils Night,
в дизайнере открой
на странице Ready сдвинь влево на 1000 пикселей что не нужно или visible= false
картинку можешь встаить bmp там же
пнг это через ботву, которую я ни разу не использовал
можно бмп в фотошопе полупрозрачным сделать
...или позже сам доделаю
Цитата Devils Night:
ненужны, а так же внизу кнопки "Установить", "Закрыть", »
ладно кнопка "закрыть", но без "установить" с тремя переключателями как им пользоваться? o_O

Отправлено: 21:32, 25-02-2012 | #898


Забанен


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

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


Цитата Johny777:
в дизайнере открой
на странице Ready сдвинь влево на 1000 пикселей что не нужно или visible= false »
Да причём здесь инсталл, когда хочу с автораном из справки разобраться?!
нужно не из авторана в инсталятор функции добавить, а в авторан, в котором уже почти всё присутствует кроме RadioButton.
Цитата Johny777:
ладно кнопка "закрыть", но без "установить" с тремя переключателями как им пользоваться? »
Я вообще то не про кнопки, а про обрамление вокруг них.

Последний раз редактировалось Devils Night, 26-02-2012 в 01:19.


Отправлено: 21:43, 25-02-2012 | #899


Аватара для Johny777

Ветеран


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

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


Цитата Devils Night:
Я вообще то не про кнопки, а про обрамление вокруг них. »
используй скин (добавил)
добавил всплывающие подсказки
добавил константы названий и всплывающих подсказок/описаний переключателей
не зная как сделать чекбоксы и их названия прозрачными разместил их все на панели
вот код
читать дальше »
Код: Выделить весь код
;      Скрипт создан с помощью
; IS GameScript Generator by South
;   специально для www.csmania.ru

#define MyAppName "Autorun"

[Setup]
SourceDir=.
OutputDir=Setup
AppName={#MyAppName}
AppVerName={#MyAppName}
AppVersion={#MyAppName}
CreateAppDir=false
OutputBaseFilename={#MyAppName}
Uninstallable=false
//SetupIconFile=hl2.ico
ShowLanguageDialog=auto
LanguageDetectionMethod=uilanguage
UsePreviousLanguage=no
DisableProgramGroupPage=yes
DisableWelcomePage=yes
DisableDirPage=true
DisableFinishedPage=yes


[Files]
DestName: "WizardForm.Image.bmp"; Source: "Image.bmp"; Flags: dontcopy solidbreak
Source: ISSkin.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: skin.cjstyles; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

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

[Messages]
Russian.SetupWindowTitle=%1
WizardReady=
ReadyLabel2b=

[CustomMessages]
Russian.go=Установить
English.go=Install
Russian.exit=Закрыть
English.exit=Close

Russian.desc1=описание первой программы
English.desc1=
Russian.desc2=описание второй программы
English.desc3=
Russian.desc3=описание третьей программы
English.desc3=

Russian.p1=название первой программы
English.p1=
Russian.p2=название второй программы
English.p2=
Russian.p3=название третьей программы
English.p3=

[run]
Filename: {src}\program\setup_1.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: X;
Filename: {src}\program\setup_2.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Y;
Filename: {src}\program\setup_2.exe; WorkingDir: {src}\program; Flags: skipifdoesntexist nowait; Check: Z;

[.......Code]
var
 install_1: TNewRadioButton;
 install_2: TNewRadioButton;
 install_3: TNewRadioButton;
 Initialize:Boolean;
 Image: TBitmapImage;
 Panel1: TPanel;
 
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall';
function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

function InitializeSetup:boolean;
begin
Initialize:=False;
   ExtractTemporaryFile('skin.cjstyles');
   LoadSkin(ExpandConstant('{tmp}')+'\skin.cjstyles', '');
   Result:=True;
Result:=True;
end;

function X: Boolean;
 begin
 If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
  Result:=install_1.Checked;
   end;
    function Y: Boolean;
     begin
      If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
       Result:=install_2.Checked;
        end;
         function Z: Boolean;
          begin
           If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
            Result:=install_3.Checked;
             end;


procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=False;
Cancel:=True;
end;

procedure InitializeWizard();
begin
WizardForm.CancelButton.BringToFront;
WizardForm.NextButton.BringToFront;
WizardForm.CancelButton.Left := ScaleX(120);
WizardForm.CancelButton.Top := ScaleY(30);
WizardForm.NextButton.Left := ScaleX(20);
WizardForm.NextButton.Top := ScaleY(30);
WizardForm.BorderStyle := bsToolWindow;
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
WizardForm.ClientHeight := ScaleY(539);
WizardForm.ClientWidth := ScaleX(719);
   Panel1 := TPanel.Create(WizardForm);
        with Panel1 do
        begin
          Name := 'Panel1';
          Parent := WizardForm;
          Left := ScaleX(20);
          Top := ScaleY(60);
          Width := ScaleX(180);
          Height := ScaleY(90);
          BevelOuter := bvLowered;
          Caption := '';
       end;
   Image := TBitmapImage.Create(WizardForm);
        with Image do
        begin
          Name := 'Image';
          Parent := WizardForm;
          Left := ScaleX(0);
          Top := ScaleY(0);
          Width := ScaleX(719);
          Height := ScaleY(539);
          ExtractTemporaryFile('WizardForm.Image.bmp');
          Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardForm.Image.bmp'));
       end;
   If FileExists(ExpandConstant('{src}\program\setup_1.exe')) then
     begin
     install_1 := TNewRadioButton.Create(WizardForm);
        with install_1 do
        begin
          Name := 'install_1';
          Parent := Panel1;
          Left := ScaleX(10);
          Top := ScaleY(10);
          Width := ScaleX(190);
          Height := ScaleY(17);
          Caption := ExpandConstant('{cm:p1}');
          Hint := ExpandConstant('{cm:desc1}');
          ShowHint := True;
          Checked:= True;
        end;
     end;
   If FileExists(ExpandConstant('{src}\program\setup_2.exe')) then
     begin
     install_2 := TNewRadioButton.Create(WizardForm);
        with install_2 do
        begin
          Name := 'install_2';
          Parent := Panel1;
          Left := ScaleX(10);
          Top := ScaleY(35);
          Width := ScaleX(190);
          Height := ScaleY(17);
          Caption := ExpandConstant('{cm:p2}');
          Hint := ExpandConstant('{cm:desc2}');
          ShowHint := True;
          Checked:= True;
        end;
     end;
   If FileExists(ExpandConstant('{src}\program\setup_3.exe')) then
     begin
     install_3 := TNewRadioButton.Create(WizardForm);
        with install_3 do
        begin
          Name := 'install_3';
          Parent := Panel1;
          Left := ScaleX(10);
          Top := ScaleY(60);
          Width := ScaleX(190);
          Height := ScaleY(17);
          Caption := ExpandConstant('{cm:p3}');
          Hint := ExpandConstant('{cm:desc3}');
          ShowHint := True;
          Checked:= True;
        end;
     end;
  Initialize:=True;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID=wpReady then
    begin
    WizardForm.PageDescriptionLabel.Hide;
      WizardForm.NextButton.Caption:= ExpandConstant('{cm:go}');
      WizardForm.CancelButton.Caption:= ExpandConstant('{cm:exit}');
    end;
end;

procedure DeinitializeSetup;
begin
 if Initialize then 
  begin
    ShowWindow(WizardForm.Handle,0);
    UnloadSkin();
  end;
end;

или архив с картинкой , библиотекой и скином
http://rghost.ru/36712056

Последний раз редактировалось Johny777, 26-02-2012 в 02:39.

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

Отправлено: 02:28, 26-02-2012 | #900



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход