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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-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] - Скачать;

  • RegExporter - Фриварная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.2.0 [23.09.2014] - Скачать;



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

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

Отправлено: 08:52, 02-02-2015

 

Аватара для Dodakaedr

Ветеран


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

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


Цитата palsn2000:
Что у меня в записи с taskkil не так? »
Нет такой программы. Попробуйте так:
Код: Выделить весь код
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
errorcode: integer;
  begin
    if CurUninstallStep=usUninstall then
      begin
      Exec('taskkill',' /f /im FmsProxy.exe', '', SW_Hide, ewWaitUntilTerminated, ErrorCode);
      end;
  end;

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 20:17, 12-07-2015 | #781



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

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


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


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

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


Dodakaedr, Большое спасибо, а то я всю голову изломал, что не так. Всё из-за моей невнимательности - всю жизнь мне мешает: пропущу какую-нибудь мелочь, а потом сам над собой смеюсь.

Отправлено: 21:10, 12-07-2015 | #782


Аватара для nik1967

Старожил


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

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


Цитата Uragan66:
Можно это решить ? »
Можно
Код: Выделить весь код
[Setup]
AppName=My Program 
AppVerName=My Program 
DefaultDirName={pf}\My Program
OutputDir=.
Uninstallable=IsChecked
CreateUninstallRegKey=IsChecked

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

[Tasks]
; Дополнительно
; Ярлык(и) на «Рабочем столе»
Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked
; Ярлыки в меню «Пуск»
Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked

[Icons]
Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon  
Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon
[Files]
; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить!
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs

[CustomMessages]
HeaderLabelPage=Выбор типа установки
LabelPage=Выберите нужный тип установки
MyRadioCaption_1=Распаковка
MyRadioCaption_2=Обычная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице                           
MyText_2=Будет произведена стандартная установка
Extracted=Распаковка — %1
ExtractedFolder=Выбор папки распаковки
ExtractedFolder2=В какую папку вы хотите распаковать %1?
ExtractedFolder3=Программа распакует %1 в следующую папку.
ExtractedFolder4=Программа установит %1 в следующую папку.
Installing=Распаковка...
InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер.
FinishedHeadingLabel=Завершение распаковки%n%1
FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки.

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

[code]
const
  DI_NORMAL = 3;

var
  MyNewPage: TWizardPage;
  Rect: TRect;
  HIcon: LongInt;
  AIconFileName: String;
  MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;
	
function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall';

function IsChecked: Boolean;
begin
  Result:= MyRadioBtn_2.checked;
end;

procedure RadBtnOnClick(Sender: TObject); 
begin
  case Sender of
    MyRadioBtn_1: begin
      WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
    end;
    MyRadioBtn_2: begin
      WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]);
      WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
    end;
  end;
end;

procedure GetInstTypePage();
begin
  MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}'));

  try
    // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа.
    // Можно использовать обычные .ico
    AIconFileName:= ExpandConstant('{sys}\shell32.dll');
    //

    Rect.Left:= 0;
    Rect.Top:= 0;
    Rect.Right:= 32;
    Rect.Bottom:= 32;

    hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26);
    try
      with TBitmapImage.Create(WizardForm) do begin
        Left:= ScaleX(15);
        Top:= ScaleY(138);
        Width:= 32;
        Height:= 32;
        with Bitmap do begin
          Width:= 32;
          Height:= 32;
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent:= MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;

    hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); 
    try
      with TBitmapImage.Create(WizardForm) do begin
        Left:= ScaleX(15);                                                
        Top:= ScaleY(68);
        Width:= 32;
        Height:= 32;
        with Bitmap do begin
          Width:= 32;
          Height:= 32;
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent:= MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;
   except
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Width:= WizardForm.InnerNotebook.Width;
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:PageTextHeader}');
    Parent:= MyNewPage.Surface;
  end;

  MyRadioBtn_1:= TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do begin
    Top:= ScaleY(120);
    Width:= ScaleX(150);
    Caption:= ExpandConstant('{cm:MyRadioCaption_1}');
    OnClick:= @RadBtnOnClick;
    Parent:= MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Left:= ScaleX(60);
    Top:= ScaleY(138);
    Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:MyText_1}');
    Parent:= MyNewPage.Surface;
  end;

  MyRadioBtn_2:= TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do begin
    Top:= ScaleY(50);
    Width:= ScaleX(150);   
    Caption:= ExpandConstant('{cm:MyRadioCaption_2}');
    Checked:= True;
    OnClick:= @RadBtnOnClick;
    Parent:= MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Left:= ScaleX(60);
    Top:= ScaleY(68);
    Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:MyText_2}');
    Parent:= MyNewPage.Surface;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then
     Result:= True;
end;

procedure InitializeWizard();
begin
  GetInstTypePage();
  WizardForm.DiskSpaceLabel.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if not IsChecked then begin
    case CurPageID of
      wpSelectDir: begin
	WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}');
	WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      end;
      wpInstalling: begin
	WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}');
	WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      end;
      wpFinished: begin
	WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      end;
    end;
  end;
end;

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


Последний раз редактировалось nik1967, 14-07-2015 в 09:48.

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

Отправлено: 20:06, 13-07-2015 | #783


Старожил


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

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


nik1967, спасибо большое ! Ваш скрипт отлично подходит. А как можно сделать чтобы конечные папки DestDir у распаковки и установки были разные ? Просто для установки вложенность папок большая и для распаковки это в конечном итоге не совсем удобно. Спасибо за помощь.

Отправлено: 21:32, 13-07-2015 | #784


Аватара для Dodakaedr

Ветеран


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

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


Цитата Uragan66:
чтобы конечные папки DestDir у распаковки и установки были разные »
Скрытый текст
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=.
Uninstallable=IsChecked
CreateUninstallRegKey=IsChecked

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

[Tasks]
; Дополнительно
; Ярлык(и) на «Рабочем столе»
Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked
; Ярлыки в меню «Пуск»
Name: "starticon"; Description: "Ярлыки в меню «Пуск»"; GroupDescription: "Дополнительно:"; Check: IsChecked

[Icons]
Name: "{group}\My Program"; Filename: "{uninstallexe}"; Tasks: starticon; Check: not IsChecked
Name: "{commondesktop}\My Program"; Filename: "{uninstallexe}"; Tasks: desktopicon; Check: IsChecked

[Files]
; Файлы для проверки и демонстрации. При реальном использовании - закомментировать или удалить!
Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs

[CustomMessages]
HeaderLabelPage=Выбор типа установки
LabelPage=Выберите нужный тип установки
MyRadioCaption_1=Распаковка
MyRadioCaption_2=Обычная установка
PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен.
MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице
MyText_2=Будет произведена стандартная установка
Extracted=Распаковка — %1
ExtractedFolder=Выбор папки распаковки
ExtractedFolder2=В какую папку вы хотите распаковать %1?
ExtractedFolder3=Программа распакует %1 в следующую папку.
ExtractedFolder4=Программа установит %1 в следующую папку.
Installing=Распаковка...
InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер.
FinishedHeadingLabel=Завершение распаковки%n%1
FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки.

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

[code]
const
  DI_NORMAL = 3;

var
  MyNewPage: TWizardPage;
  Rect: TRect;
  HIcon: LongInt;
  AIconFileName: String;
  MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton;

function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall';
function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall';

function IsChecked: Boolean;
begin
  Result:= MyRadioBtn_2.checked;
end;

procedure RadBtnOnClick(Sender: TObject);
begin
  case Sender of
    MyRadioBtn_1: begin
      WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
    end;
    MyRadioBtn_2: begin
      WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]);
      WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
    end;
  end;
end;

procedure GetInstTypePage();
begin
  MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}'));

  try
    // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа.
    // Можно использовать обычные .ico
    AIconFileName:= ExpandConstant('{sys}\shell32.dll');
    //

    Rect.Left:= 0;
    Rect.Top:= 0;
    Rect.Right:= 32;
    Rect.Bottom:= 32;

    hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26);
    try
      with TBitmapImage.Create(WizardForm) do begin
        Left:= ScaleX(15);
        Top:= ScaleY(68);
        Width:= 32;
        Height:= 32;
        with Bitmap do begin
          Width:= 32;
          Height:= 32;
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent:= MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;

    hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19);
    try
      with TBitmapImage.Create(WizardForm) do begin
        Left:= ScaleX(15);
        Top:= ScaleY(138);
        Width:= 32;
        Height:= 32;
        with Bitmap do begin
          Width:= 32;
          Height:= 32;
          Canvas.Brush.Color:= clBtnFace;
          Canvas.FillRect(Rect);
          DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL);
        end;
        Parent:= MyNewPage.Surface;
      end;
     finally
     DestroyIcon(hIcon);
    end;
   except
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Width:= WizardForm.InnerNotebook.Width;
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:PageTextHeader}');
    Parent:= MyNewPage.Surface;
  end;

  MyRadioBtn_1:= TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do begin
    Top:= ScaleY(50);
    Width:= ScaleX(150);
    Caption:= ExpandConstant('{cm:MyRadioCaption_1}');
    OnClick:= @RadBtnOnClick;
    Parent:= MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Left:= ScaleX(60);
    Top:= ScaleY(68);
    Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:MyText_1}');
    Parent:= MyNewPage.Surface;
  end;

  MyRadioBtn_2:= TNewRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do begin
    Top:= ScaleY(120);
    Width:= ScaleX(150);
    Caption:= ExpandConstant('{cm:MyRadioCaption_2}');
    Checked:= True;
    OnClick:= @RadBtnOnClick;
    Parent:= MyNewPage.Surface;
  end;

  with TNewStaticText.Create(WizardForm) do begin
    Left:= ScaleX(60);
    Top:= ScaleY(138);
    Width:= WizardForm.InnerNotebook.Width - ScaleX(60);
    Height:= ScaleY(26);
    WordWrap:= True;
    Caption:= ExpandConstant('{cm:MyText_2}');
    Parent:= MyNewPage.Surface;
  end;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then
     Result:= True;
end;

procedure InitializeWizard();
begin
  GetInstTypePage();
  WizardForm.DiskSpaceLabel.Hide;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if not IsChecked then begin
    case CurPageID of
      wpSelectDir: begin
	WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}');
	WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
  if IsChecked then
    WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else
    WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' );
      end;
      wpInstalling: begin
	WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}');
	WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      end;
      wpFinished: begin
	WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
	WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]);
      end;
    end;
  end;
end;

-------
Inno Setup 5 Ultra Unicode

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

Отправлено: 22:24, 13-07-2015 | #785


Старожил


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

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


Dodakaedr, Спасибо за помощь. Но я наверно неправильно объяснил суть
Мой скрипт
Код: Выделить весь код
;InnoSetupVersion=5.3.10
[Setup]
AppName=ParticleIllusion Emitter Libraries
AppVerName=ParticleIllusion all version Emitter Libraries
AppPublisher=GenArts, Inc.
DefaultDirName={sd}\Portable Soft
OutputBaseFilename=Emitter Libraries
AlwaysShowComponentsList=yes
ShowComponentSizes=yes
ComponentsListTVStyle=yes
ComponentsListBtnImageFile=btnimage.bmp
AppendDefaultDirName=no
DirExistsWarning=no
AlwaysShowDirOnReadyPage=yes
DisableProgramGroupPage=yes
SetupIconFile=particleIllusion.ico
Compression=lzma
Uninstallable=no

//====={ Выбор языка }=====\\
[Languages]
Name: "rus"; MessagesFile: "compiler:Default.isl"
Name: "eng"; MessagesFile: "compiler:Languages\English.isl"

[Types]
Name: "full"; Description: "Полная установка"
Name: "custom"; Description: "Выборочная установка"; Flags: iscustom
Name: "compact"; Description: "Распаковка";

[Components]
Name: "Installation"; Description: "Установка"; Types: full; Flags: exclusive collapsed
Name: "Installation\Libraries"; Description: "Вся библиотека"; Types: full custom;
Name: "Installation\Libraries\allemiters"; Description: "Стандартные эмитеры"; Types: full custom;
Name: "Installation\Libraries\allemiters\Jear"; Description: "По годам выпуска"; Types: full custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2013"; Description: "Emitter of 2013"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2012"; Description: "Emitter of 2012"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2011"; Description: "Emitter of 2011"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2010"; Description: "Emitter of 2010"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2009"; Description: "Emitter of 2009"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2008"; Description: "Emitter of 2008"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2007"; Description: "Emitter of 2007"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2006"; Description: "Emitter of 2006"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2005"; Description: "Emitter of 2005"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2004"; Description: "Emitter of 2004"; Types: full  custom;
Name: "Installation\Libraries\allemiters\Jear\Emitter2003"; Description: "Emitter of 2003"; Types: full  custom;
Name: "Installation\Libraries\customemiters"; Description: "Пользовательские эмитеры"; Types: full custom;
Name: "Installation\Libraries\customemiters\On_type"; Description: "По типу (Абстракция, мульт и т.д.)"; Types: full custom;
Name: "Installation\Libraries\customemiters\Alan"; Description: "Эмитеры Alan"; Types: full custom;
Name: "Installation\Libraries\customemiters\Butterflies"; Description: "Эмитеры Butterflies-бабочки"; Types: full custom;
Name: "Installation\Libraries\customemiters\Flower"; Description: "Эмитеры Flower-цветы"; Types: full custom;
Name: "Installation\Libraries\customemiters\LCP"; Description: "Эмитеры LCP"; Types: full custom;
Name: "Installation\Libraries\customemiters\PE"; Description: "Эмитеры PE"; Types: full custom;
Name: "Installation\Libraries\customemiters\Misc"; Description: "Эмитеры разные"; Types: full custom;
Name: "Extracted"; Description: "Распаковка"; Types: compact; Flags: exclusive

[Files]
;Source: "{app}\Emitter Libraries\allemiters\2003\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2003"; Components: Installation\Libraries\allemiters\Jear\Emitter2003; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2004\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2004"; Components: Installation\Libraries\allemiters\Jear\Emitter2004; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2005\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2005"; Components: Installation\Libraries\allemiters\Jear\Emitter2005; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2006\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2006"; Components: Installation\Libraries\allemiters\Jear\Emitter2006; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2007\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2007"; Components: Installation\Libraries\allemiters\Jear\Emitter2007; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2008\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2008"; Components: Installation\Libraries\allemiters\Jear\Emitter2008; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2009\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2009"; Components: Installation\Libraries\allemiters\Jear\Emitter2009; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2010\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2010"; Components: Installation\Libraries\allemiters\Jear\Emitter2010; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2011\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2011"; Components: Installation\Libraries\allemiters\Jear\Emitter2011; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2012\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2012"; Components: Installation\Libraries\allemiters\Jear\Emitter2012; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2013\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\2013"; Components: Installation\Libraries\allemiters\Jear\Emitter2013; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\On_type\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\On_type"; Components: Installation\Libraries\customemiters\On_type; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Alan\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\Alan"; Components: Installation\Libraries\customemiters\Alan; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Butterflies\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\Butterflies"; Components: Installation\Libraries\customemiters\Butterflies; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Flower\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\Flower"; Components: Installation\Libraries\customemiters\Flower; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\LCP\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\LCP"; Components: Installation\Libraries\customemiters\LCP; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\PE\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\PE"; Components: Installation\Libraries\customemiters\PE; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\PortableApps\ParticleIllusion 3.0.9\App\particleIllusion 3.0\Emitter Libraries\Misc"; Components: Installation\Libraries\customemiters\Misc; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2003\*"; DestDir: "{app}\Emitter Libraries\2003"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2004\*"; DestDir: "{app}\Emitter Libraries\2004"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2005\*"; DestDir: "{app}\Emitter Libraries\2005"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2006\*"; DestDir: "{app}\Emitter Libraries\2006"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2007\*"; DestDir: "{app}\Emitter Libraries\2007"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2008\*"; DestDir: "{app}\Emitter Libraries\2008"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2009\*"; DestDir: "{app}\Emitter Libraries\2009"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2010\*"; DestDir: "{app}\Emitter Libraries\2010"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2011\*"; DestDir: "{app}\Emitter Libraries\2011"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2012\*"; DestDir: "{app}\Emitter Libraries\2012"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\allemiters\2013\*"; DestDir: "{app}\Emitter Libraries\2013"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\On_type\*"; DestDir: "{app}\Emitter Libraries\On_type"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Alan\*"; DestDir: "{app}\Emitter Libraries\Alan"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Butterflies\*"; DestDir: "{app}\Emitter Libraries\Butterflies"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Flower\*"; DestDir: "{app}\Emitter Libraries\Flower"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\LCP\*"; DestDir: "{app}\Emitter Libraries\LCP"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\PE\*"; DestDir: "{app}\Emitter Libraries\PE"; Components: Extracted; Flags: ignoreversion
;Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\Emitter Libraries\Misc"; Components: Extracted; Flags: ignoreversion

у меня "Распаковка" идет как компонент , но так не совсем удобно и некрасиво. Как совместить скрипт который написал nik1967 с моим, но чтобы при выборе "Распаковка" все распаковывалось так как в моем скрипте при выборе компонента "Распаковка" ?

Отправлено: 01:53, 14-07-2015 | #786


Аватара для nik1967

Старожил


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

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


Uragan66, вместо "Components: Extracted" используй "Check: not IsChecked". То есть, вместо
Код: Выделить весь код
Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\Emitter Libraries\Misc"; Components: Extracted; Flags: ignoreversion
пропиши
Код: Выделить весь код
Source: "{app}\Emitter Libraries\customemiters\Misc\*"; DestDir: "{app}\Emitter Libraries\Misc"; Check: not IsChecked; Flags: ignoreversion
И да, если быть честным, то скрипт написал не я. Я просто нашёл его у себя в загашнике, и немного подправил. Мне неудобно, но автора я не знаю/не помню.

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

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

Отправлено: 07:18, 14-07-2015 | #787


Старожил


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

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


nik1967, спасибо большое ! Все как надо. А поменять местами " Распаковка" и " Установка" на первой странице получится ? Извини что надоедаю.

Отправлено: 08:51, 14-07-2015 | #788


Аватара для nik1967

Старожил


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

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


Цитата Uragan66:
получится ? »
Чего же не получится? Получится. Изменил предыдущий скрипт.

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

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

Отправлено: 09:50, 14-07-2015 | #789


Старожил


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

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


nik1967, отлично ! Еще раз огромный респект за помощь !

Отправлено: 11:01, 14-07-2015 | #790



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 7] El Sanchez Автоматическая установка приложений 2499 02-02-2015 08:59
Скрипты Inno Setup. Помощь и советы [часть 6] El Sanchez Автоматическая установка приложений 2494 10-03-2014 11:51
Скрипты 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




 
Переход