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

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

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

Ветеран


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


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

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


Изменения
Автор: Serega
Дата: 13-08-2011
Вложения
Тип файла: 7z Inno Setup [все вопросы] часть 1.7z
(1.34 Mb, 898 просмотров)
Тип файла: 7z Inno Setup [все вопросы] часть 2.7z
(3.12 Mb, 796 просмотров)
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


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

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


Отправлено: 00:28, 04-11-2010

 

Старожил


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

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


Всем здравствуйте!

Проблема первая, как проверить версию .Net Framework при установке программы, запакованной в Inno Setup? В частности мне нужна версия 3.5 и выше. В нете нашёл много примеров, но они мне либо не подходят по функционалу, либо вызывают ошибку ещё на этапе компилляции. Хочется проверять версию .Net в реестре. Сам дистрибутив .Net входит в состав моего пакета, но пока-что устанавливается всегда, даже если в системе уже есть установленный Framework, что естественно плохо. Да и к тому же, на Vista и Seven установка dotNetFx40_Client_x86_x64.exe, который входит в состав моего пакета и устанавливается из секции Run, вызывает автоматическую перезагрузку системы даже с ключем /norestart еще на этапе установки, не позволяя её завершить, на XP такого не замечено.

Проблема вторая, из секции Run кроме .Net Framework устанавливается ещё и другое ПО, установка занимает дополнительное время, но прогресс уже не отображается, стандартный прогрессбар уже показывает все 100%. Вопрос, как добавить второй прогрессбар для программ из секции Run с правильным расчетом процентов при установке доп. ПО (не фейковый)? Ну или хотя бы чтобы было видно только сами проценты при установке каждого пакета из дополнительного ПО, что именно из доп. ПО сейчас устанавливается в мастере отображается. Находил варианты для 7-zip, FreeArc архивов, но мне нужен способ для разных дистрибутивов, в том числе для msi-пакетов. Доп. ПО запускается из {tmp}.

Отправлено: 21:39, 25-12-2010 | #261



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

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


Аватара для Gnom_aka_Lexander

Ветеран


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

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


Rostlv,
Если решиш, особенно по второму вопросу, буду рад узнать это решение, сам ищу...

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.


Отправлено: 21:43, 25-12-2010 | #262


Ветеран


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

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


Цитата Rostlv:
как проверить версию .Net Framework при установке программы »
уже отвечал на похожий вопрос...
Пример

Код: Выделить весь код
; определение версии установленного .Net Framework

[Setup]
AppName=NetFramework
AppVerName=NetFramework
DefaultDirName={pf}\NetFramework
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
VersionInfoCopyright=Serega

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

[Code]
const
  MinNetFrameWork = 'v4.0'; // минимальная версия NetFrameWork
  // Возможные версии = 'v1.0', 'v1.1', 'v2.0', 'v3.0', 'v3.5', 'v4.0'

var
  url: string;

procedure GetUrlNetFrameWork(ver: string);
begin
  // страница загрузок http://www.microsoft.com/downloads/results.aspx?pocId=&freetext=Framework&DisplayLang=ru
  case ver of
    // по этой ссылке v1.1, т.к. ссылку на v1.0, я не нашёл... раритет... ;)
    'v1.0': url := 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
    'v1.1': url := 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
    'v2.0': url := 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
    'v3.0': url := 'http://download.microsoft.com/download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe';
    'v3.5': url := 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
    'v4.0': url := 'http://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe';
  else
    url := 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
  end;
end;

function CompareMinVer(const ver: string): Boolean;
var
  min_ver: string;
begin
  Result := False;
  min_ver := MinNetFrameWork;
  if (Length(min_ver) > 2) and (Length(ver) > 2) then
    if (min_ver[2] > #47) and (min_ver[2] < #58) and (ver[2] > #47) and (ver[2] < #58) then
      Result := ver[2] > min_ver[2];
end;

function DetectInstallNetFrameWork: Boolean;
var
  VerNetFrameWorkInstalled: TArrayOfString;
  i: Integer;
begin
  Result := False;
  if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP', VerNetFrameWorkInstalled) then
    case CompareMinVer(VerNetFrameWorkInstalled[0]) of
      True : Result := True;
      False:
        for i := 0 to GetArrayLength(VerNetFrameWorkInstalled)-1 do
          if Pos(MinNetFrameWork, VerNetFrameWorkInstalled[i]) > 0 then
            begin
              Result := True;
              Break;
            end;
    end;
end;

function SearchNetFrameWork: Boolean;
var
  ErrorCode: Integer;
begin
  Result := DetectInstallNetFrameWork;
  if not Result then
    if MsgBox('Для этой программы требуется установленный .NET Framework не ниже ' + MinNetFrameWork + '. ' +
              'Пожалуйста загрузите и установите .NET Framework и запустите установку снова. ' +
              'Вы хотите загрузить .NET Framework сейчас?', mbConfirmation, MB_YESNO) = idYes then
      begin
        GetUrlNetFrameWork(MinNetFrameWork);
        ShellExec('open', url, '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
      end;
end;

function InitializeSetup: Boolean;
begin
  Result := SearchNetFrameWork;
end;


Цитата Rostlv:
Проблема вторая »
Всё что вы хотите, всё это реализуемо, только если вы заставите свою запускаемую программу отвечать, насколько она процентов выполнилась...
Если это не задано автором программы, то вам это никогда не получиться, отображать реальный процент.
Но как говорится если очень сильно хочится...
1. Вариант:
Берём распакованный размер программы и в момент установки, сверяем размеры папок и уже от этого увеличиваем прогрессбар.
2. Вариант:
Просто задаём прогрессбару стиль, такой же как у прогрессбара при установке IE, т.е. нет реального процента, а полоска бегает и пользователь видит, что программа не зависла.

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


Последний раз редактировалось Serega, 26-12-2010 в 18:48.

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

Отправлено: 22:37, 25-12-2010 | #263


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


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

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


Как прявязать к радибаттонам в этом [code]
Код: Выделить весь код
var
  MyNewPage: TWizardPage;
  MyRadioBtn_1, MyRadioBtn_2: TRadioButton;

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

  MyRadioBtn_1 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_1 do
  begin
    Top := ScaleY(50);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_1}');
    Checked := True;
    Parent := MyNewPage.Surface;
  end;

  MyRadioBtn_2 := TRadioButton.Create(WizardForm);
  with MyRadioBtn_2 do
  begin
    Top := ScaleY(120);
    Width := ScaleX(150);
    Height := ScaleY(13);
    Caption := ExpandConstant('{cm:MyRadioCaption_2}');
    Parent := MyNewPage.Surface;
  end;
end;

procedure InitializeWizard();
begin
  GetMyNewPage();
end;
копирование определенного файла (т.е для одной радиокнопки это один из секкции [Files] для второй другой)
например такие
Код: Выделить весь код
Source: d:\Programs\!Install\norm\boot1.ini; DestDir: {app}; Components: a; 
Source: d:\Programs\!Install\port\boot2.ini; DestDir: {app}; Components: b;
(раньше я их привязывал в секциях компоненты к радиокнопкам, но охота сделать на новой странице это.

Отправлено: 23:46, 25-12-2010 | #264


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


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

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


Цитата ksunechkin:
Как прявязать к радибаттонам »
Код: Выделить весь код
[Files]
Source: d:\Programs\!Install\norm\boot1.ini; DestDir: {app}; Components: a; Check: GetRadio_1Checked;
Source: d:\Programs\!Install\port\boot2.ini; DestDir: {app}; Components: b; Check: GetRadio_2Checked;

[code]
function GetRadio_1Checked(): Boolean;
begin
  Result := MyRadioBtn_1.Checked;
end;

function GetRadio_2Checked(): Boolean;
begin
  Result := MyRadioBtn_2.Checked;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:05, 26-12-2010 | #265


Старожил


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

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


С первой проблемой разобрался путём замены дистрибутива .Net с версии 4.0 на 3.5, которая, в отличие от 4.0, сама проверяет наличие установленной в системе версии .Net Framework и не устанавливает повторно то, что уже есть. Serega, приведённый код на Seven работает некорректно, в указанной ветке реестра на чистой системе есть только v2.0, хотя в системе установлена v3.5.

По второму вопросу полноценный прогрессбар сделать не получится, поэтому придётся довольствоваться фейковым, как при установке IE. Где найти код для него и как "прикрутить" его к секции Run? У меня сейчас уже задействован код для отображения процентов при распаковке всех файлов моего дистрибутива, поэтому нужно соединить обе части кода, первую привожу:


Код: Выделить весь код
 
var 
  ProgressLabel, SizeLabel: TLabel; 
   
procedure Progress(); 
var 
  size: integer; 
   
begin 
  with WizardForm.ProgressGauge do 
    ProgressLabel.Caption:= IntToStr((Position-Min)/((Max - Min)/100)) + '%'; 
 
  FileSize(ExpandConstant(CurrentFileName), size); 
  SizeLabel.Caption:= IntToStr(size) + ' bytes'; 
end; 
 
procedure InitializeWizard(); 
begin 
  ProgressLabel := TLabel.Create(WizardForm); 
  with WizardForm.ProgressGauge do 
    begin 
      ProgressLabel.Top := Top + Height + ScaleY(8); 
      ProgressLabel.Left:= Left + Width/2 - ScaleX(8); 
      ProgressLabel.AutoSize := True; 
      ProgressLabel.Parent := WizardForm.InstallingPage; 
    end; 
     
  SizeLabel := TLabel.Create(WizardForm); 
  with WizardForm.ProgressGauge do 
    begin 
      SizeLabel.Top := Top + Height + ScaleY(8); 
      SizeLabel.Left:= Left; 
      SizeLabel.AutoSize := True; 
      SizeLabel.Parent := WizardForm.InstallingPage; 
    end; 
end;

Отправлено: 04:52, 26-12-2010 | #266


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

Ветеран


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

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


Rostlv,
загляни в реестр HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\ - по подключам типа 3.5 можно узнавать какая версия фреймворка стоит

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

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

Отправлено: 09:37, 26-12-2010 | #267


Ветеран


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

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


Цитата Rostlv:
Serega, приведённый код на Seven работает некорректно »
Переписал код в предыдущем сообщении, теперь должно работать нормально.
Цитата Rostlv:
Где найти код для него »
Только самому написать
Вот накидал простой пример:
Пример

Код: Выделить весь код
; Прогрессбар без отображения реального процента...

[Setup]
AppName=ProgressBarStyle
AppVerName=ProgressBarStyle v 1.0
DefaultDirName={pf}\ProgressBarStyle
OutputDir=.
Compression=lzma/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
VersionInfoCopyright=Serega

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

[Code]
function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';

const
  WM_USER        = $0400;
  PBM_SETMARQUEE = WM_USER + 10;
  GWL_STYLE      = -16;
  PBS_MARQUEE    = $08;

procedure CreateForm;
var
  Form: TSetupForm;
begin
  try
    Form := CreateCustomForm;
    with Form do
      begin
        ClientWidth :=  ScaleX(400);  
        ClientHeight := ScaleY(70);   
        Center;
        Caption := 'Пример';
      end;
    with TLabel.Create(Form) do
      begin
        Parent := Form;
        AutoSize := True;
        Left := ScaleX(12);
        Top := ScaleY(12);
        Font.Size := 9;
        Caption := 'Прогрессбар без отображения реального процента...';
      end;
    with TNewProgressBar.Create(Form) do
      begin
        Parent := Form;
        SetBounds(ScaleX(10), ScaleY(38), Form.ClientWidth - ScaleX(20), ScaleY(17));
        SetWindowLong (Handle, GWL_STYLE, (GetWindowLong (Handle, GWL_STYLE) or PBS_MARQUEE));
        SendMessage(Handle, PBM_SETMARQUEE, 1, 20);
      end;
    Form.ShowModal;
  finally
    Form.Free;
  end;
end;

function InitializeSetup(): Boolean;
begin
  CreateForm;
end;

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

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

Отправлено: 19:13, 26-12-2010 | #268


Аватара для gur74

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


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

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


Лександер

Спасибо.

Кто - нибудь может помочь поправить скрипт. Компилируется и программа устанавливается нормально, но при удалении выскакивают ошибки:

первая:



а за ней вторая:



Вот скрипт:

читать дальше »
;

InnoSetupVersion=5.4.0 (a),ISPP=5.3.9 (a) (build 101211)

[Setup]
AppId={{2E115B70-E98C-463E-908A-E73C9CBFF816}
AppName=LikeRusXP Localization
AppVersion=6.01.12
AppVerName={cm:NameAndVersion,LikeRusXP Localization,6.01.12}
AppPublisher=Radialix, Inc.
AppPublisherURL=http://likerusxp.ru/
AppSupportURL=http://likerusxp.ru/
AppUpdatesURL=http://likerusxp.ru/
DefaultDirName={pf}\LikeRusXP Localization
DefaultGroupName=LikeRusXP Localization
AllowNoIcons=yes
LicenseFile=embedded\License.rtf
InfoBeforeFile=embedded\InfoBefore.rtf
OutputBaseFilename=Setup_LRXP_6.01.12
SetupIconFile={tmp}\MAINICON.ico
UninstallDisplayIcon={app}\Uninstall.ico
CreateUninstallRegKey=yes
Compression=lzma
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=embedded\WizardSmallImage.bmp

[Files]
Source: "{tmp}\bass.dll"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{tmp}\sound.mp3"; DestDir: "{tmp}"; Flags: deleteafterinstall dontcopy
Source: "{tmp}\ISSkin.dll"; DestDir: "{app}"; Flags: dontcopy
Source: "{tmp}\Codejock.cjstyles"; DestDir: "{app}"; Flags: dontcopy
Source: "{tmp}\Splash.png"; DestDir: "{tmp}"; Flags: deleteafterinstall ignoreversion dontcopy
Source: "{tmp}\isgsg.dll"; DestDir: "{tmp}"; Flags: deleteafterinstall ignoreversion dontcopy
Source: "{app}\*"; DestDir: "{app}"; Components: program
Source: "{app}\LikeRusXP.exe"; DestDir: "{app}"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\limage.exe"; DestDir: "{app}"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Doc\LikeRusXP.chm"; DestDir: "{app}\Doc"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Doc\likerusxp-overview.chm"; DestDir: "{app}\Doc"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\License.txt"; DestDir: "{app}"; MinVersion: 4.1.2222,5.0;
Source: "{app}\Store\elibrary.dll"; DestDir: "{app}\Store"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\lresdumper.dll"; DestDir: "{app}\Store"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\sl3core.dll"; DestDir: "{app}\Store"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\lires.exe"; DestDir: "{app}\Store"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\rb\lresdumper.dll"; DestDir: "{app}\Store\rb"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\rb\ResBinder.exe"; DestDir: "{app}\Store\rb"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\rb\readme.txt"; DestDir: "{app}\Store\rb"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\rb\english.uil"; DestDir: "{app}\Store\rb"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Store\rb\russian.uil"; DestDir: "{app}\Store\rb"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "{app}\Glossary\russian.lg3"; DestDir: "{app}\Glossary"; MinVersion: 4.1.2222,5.0; Flags: ignoreversion
Source: "Icons\MAINICON.ico"; DestDir: {win}\Icons; Attribs: System Hidden;
Source: "Icons\Uninstall.ico"; DestDir: {win}\Icons; Attribs: System Hidden;
Source: "Icons\ProgFilesIcon.ico"; DestDir: {win}\Icons; Attribs: System Hidden;
Source: "{app}\desktop.ini"; DestDir: {app}; Attribs: System Hidden;
Source: "{tmp}\desktop.ini"; DestDir: {pf}; Attribs: System Hidden;
;Source: "Components\*"; DestDir: "{app}"; Components: Additions

/////////////////// Components ////////////////////

[Types]
Name: "full"; Description: "Полная"
Name: "custom"; Description: "Выборочная"; Flags: iscustom

[Components]
Name: "program"; Description: "Program Files"; Types: full custom; Flags: fixed
Name: "Additions"; Description: "Словари"; Types: full

[Run]
Filename: "{app}\LikeRusXP.exe"; Description: "{cm:LaunchProgram,LikeRusXP}"; Flags: nowait postinstall skipifsilent; MinVersion: 4.1.2222,5.0;

[Icons]
Name: "{group}\LikeRusXP 6.01.12"; Filename: "{app}\LikeRusXP.exe"; MinVersion: 4.1.2222,5.0;
Name: "{group}\{cm:ProgramOnTheWeb,LikeRusXP 6.01.12}"; Filename: "http://likerusxp.ru/"; MinVersion: 4.1.2222,5.0;
Name: "{group}\{cm:UninstallProgram,LikeRusXP 6.01.12}"; Filename: "{uninstallexe}"; MinVersion: 4.1.2222,5.0;
Name: "{group}\Обзор LikeRusXP"; Filename: "{app}\Doc\likerusxp-overview.chm"; MinVersion: 4.1.2222,5.0;
Name: "{commondesktop}\LikeRusXP Localization"; Filename: "{app}\LikeRusXP.exe"; Tasks: "desktopicon"; MinVersion: 4.1.2222,5.0;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\LikeRusXP"; Filename: "{app}\LikeRusXP.exe"; Tasks: "quicklaunchicon"; MinVersion: 4.1.2222,5.0;

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; MinVersion: 4.1.2222,5.0;
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; MinVersion: 4.1.2222,5.0;

[CustomMessages]
russian.NameAndVersion=%1, версия %2
russian.AdditionalIcons=Дополнительные значки:
russian.CreateDesktopIcon=Создать значок на &Рабочем столе
russian.CreateQuickLaunchIcon=Создать значок в &Панели быстрого запуска
russian.ProgramOnTheWeb=Сайт %1 в Интернете
russian.UninstallProgram=Деинсталлировать %1
russian.LaunchProgram=Запустить %1
russian.AssocFileExtension=Св&язать %1 с файлами, имеющими расширение %2
russian.AssocingFileExtension=Связывание %1 с файлами %2...

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

[Messages]
BeveledLabel=RePack by Gu® 2010

////////////////////// Skin //////////////////////

[Code_]
{ RedesignWizardFormBegin } // Не удалять эту строку!
// Не изменять эту секцию. Она создана автоматически.
procedure RedesignWizardForm;
begin
with WizardForm.BeveledLabel do
begin
Color := cl3DLight;
Font.Height := -13;
ParentColor := False;
ParentFont := False;
Left := ScaleX(10);
Height := ScaleY(17);
end;

{ ReservationBegin }
// Вы можете добавить ваш код здесь.

{ ReservationEnd }
end;
// Не изменять эту секцию. Она создана автоматически.
{ RedesignWizardFormEnd } // Не удалять эту строку!

#ifdef UNICODE
#define PStr "AnsiString"
#else
#define PStr "String"
#endif

procedure LoadSkin(lpszPath: {#PStr}; lpszIniFileName: {#PStr});
external 'LoadSkin@files:isskin.dll stdcall delayload setuponly';
procedure LoadSkinUninst(lpszPath: {#PStr}; lpszIniFileName: {#PStr});
external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall delayload setuponly';
procedure UnloadSkinUninst();
external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';

function InitializeSetup(): Boolean;
begin
ExtractTemporaryFile('Codejock.cjstyles');
CreateDir(ExpandConstant('{sd}\ISSkin'));
FileCopy(ExpandConstant('{tmp}\Codejock.cjstyles'), ExpandConstant('{sd}\ISSkin\Codejock.cjstyles'), True);
LoadSkin(ExpandConstant('{sd}\ISSkin\Codejock.cjstyles'), 'NormalBlack.ini');

Result := True;
end;

function InitializeUninstall(): Boolean;
begin
FileCopy(ExpandConstant('{app}\isskin.dll'),
ExpandConstant('{tmp}\isskin.dll'), True);
FileCopy(ExpandConstant('{app}\Codejock.cjstyles'),
ExpandConstant('{tmp}\Codejock.cjstyles'), True);

LoadSkinUninst(ExpandConstant('{tmp}\Codejock.cjstyles'), 'NormalBlack.ini');
Result := True;
end;

procedure DeinitializeUninstall();
begin
UnloadSkinUninst();
end;

////////////////////// Splash ////////////////////////////

procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

////////////////////// Sound ///////////////////////////

const
BASS_SAMPLE_LOOP = 4; //повторение

type
HSTREAM = DWORD; //тип звукового потока

function BASS_Init(device: Integer; freq, flags: DWORD; win: hwnd; CLSID: Integer): Boolean;
external 'BASS_Init@files:BASS.dll stdcall delayload';

function BASS_StreamCreateFile(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): HSTREAM;
external 'BASS_StreamCreateFile@files:BASS.dll stdcall delayload';

function BASS_Start(): Boolean;
external 'BASS_Start@files:BASS.dll stdcall delayload';

function BASS_ChannelPlay(handle: DWORD; restart: BOOL): Boolean;
external 'BASS_ChannelPlay@files:BASS.dll stdcall delayload';

function BASS_Stop(): Boolean;
external 'BASS_Stop@files:BASS.dll stdcall delayload';

function BASS_Free(): Boolean;
external 'BASS_Free@files:BASS.dll stdcall delayload';

procedure InitializeWizard();
var Name1: string; i: Integer;
begin
RedesignWizardForm;
////////////////// Spalsh //////////////////////
ExtractTemporaryFile('Splash.png');
ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}')+'\Splash.png',1000,3000,1000,0,255,False, $FFFFFF,10);
///////////////// Splash ///////////////////////
ExtractTemporaryFile('bass.dll');
ExtractTemporaryFile('sound.mp3');
if BASS_Init(-1, 44100, 0, 0, 0) then begin
BASS_Start();
Name1:=ExpandConstant('{tmp}\sound.mp3');
i:=BASS_StreamCreateFile(FALSE, PChar(Name1), 0, 0, 4);
if i <> 0 then begin
BASS_ChannelPlay(i, True);
end;
end;
end;

procedure DeInitializeSetup();
begin
//////////// ISSkin
ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
UnloadSkin();
DeleteFile(ExpandConstant('{sd}\ISSkin\isskin.dll'));
DeleteFile(ExpandConstant('{sd}\ISSkin\Codejock.cjstyles'));
RemoveDir(ExpandConstant('{sd}\ISSkin'));
//////////// ISSkin
BASS_Stop(); //нужно для остановки проигрывания
BASS_Free(); //нужно для быстрой выгрузки библиотеки вместе с муз. файлом
end;

////////////////////// Setup end //////////////////////

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
MsgBox('Программа ' + '{#SetupSetting("AppName")}' + ' установлена!', mbInformation, MB_OK);
end;

[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010C301000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740366010B436C69656E74576964746803EF010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C69636974576964746803F7010E4578706C696369744865696768740386010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D65506167650D4578706C6963697457696 4746803F1010E4578706C696369744865696768740339010000F110544E65774E6F7465626F6F6B5061676509496E6E65725 06167650D4578706C69636974576964746803F1010E4578706C69636974486569676874033901000000F10E544E657753746 1746963546578740C426576656C65644C6162656C044C656674020A06486569676874021105436F6C6F720709636C33444C6 96768740B466F6E742E48656967687402F30B506172656E74436F6C6F72080A506172656E74466F6E74080C4578706C69636 9744C656674020A0E4578706C696369744865696768740211000000


Отправлено: 20:39, 26-12-2010 | #269


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


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

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


в дополнение к этому вопросу (который решен) - http://forum.oszone.net/post-1573479-236.html, что сделать в
Скрипте
[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={sd}\My Program
OutputDir=.
OutputBaseFilename=test

[CustomMessages]
HeaderLabelPage=Выберите тип установки
MyRadioCaption_1=Обычная установка
MyRadioCaption_2=Портативная установка

[code]
var
MyNewPage: TWizardPage;
MyRadioBtn_1, MyRadioBtn_2: TRadioButton;

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

MyRadioBtn_1 := TRadioButton.Create(WizardForm);
with MyRadioBtn_1 do
begin
Top := ScaleY(50);
Width := ScaleX(150);
Height := ScaleY(13);
Caption := ExpandConstant('{cm:MyRadioCaption_1}');
Checked := True;
Parent := MyNewPage.Surface;
end;

MyRadioBtn_2 := TRadioButton.Create(WizardForm);
with MyRadioBtn_2 do
begin
Top := ScaleY(120);
Width := ScaleX(150);
Height := ScaleY(13);
Caption := ExpandConstant('{cm:MyRadioCaption_2}');
Parent := MyNewPage.Surface;
end;
end;

procedure InitializeWizard();
begin
GetMyNewPage();
end;
чтобы под радибаттаноми можно было написать текст - .
попытался просто в секции [CustomMessages] в MyRadioCaption_1 и MyRadioCaption_2 дальше писать - вставив после Обыная установка" и "Портативная" переменную %n (вроде как это же перенос каретки), и написал делее нужный текст, но текст написался в строку и не был виден. (только начало, см на скрине)

Последний раз редактировалось Duality, 26-12-2010 в 21:04.


Отправлено: 20:59, 26-12-2010 | #270



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Inno Setup CrOsP Наборы обновлений для Windows XP/2003/Windows 7 33 11-05-2011 16:03
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Inno Setup 5.3.6 OSZone Software Новости программного обеспечения 0 15-11-2009 17:30
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
Inno Setup tradeukraine Вебмастеру 3 13-06-2006 20:39




 
Переход