Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Johny777

Ветеран


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

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


Ваня,
как добавить ещё одну картинку в BitmapResource=unins:BloodRain_U.bmp не знаю
( Кстати! Оказывается очень удобно использовать для некоторых картинок секцию Setup ,
тк нет лишней писанины с добавлением картинок в секцию Files и их перемещением в темп. как чуть ниже )

поэтому так (приписал немного комментариев)
читать дальше »
Код: Выделить весь код
#define MyAppName "test"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
UsePreviousAppDir=false
UsePreviousGroup=false
AlwaysShowComponentsList=true
FlatComponentsList=false
UsePreviousSetupType=false
UsePreviousTasks=false
UsePreviousUserInfo=false
DisableStartupPrompt=true
UninstallFilesDir={app}\uninstall
;BitmapResource=unins:BloodRain_U.bmp|unins:BloodRain_U2.bmp



[Files]
Source: tiger.cjstyles; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;
Source: isskin.dll; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;
Source: Pic1.bmp; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;
Source: Pic2.bmp; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;



[code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall setuponly';
procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';


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


procedure InitializeUninstallProgressForm();
begin
  with UninstallProgressForm do
  begin
    Width := ScaleX(757); /// ширина формы
    Height := ScaleY(500); /// высота формы
    Position := poScreenCenter; /// расположение формы в центре экрана
    CancelButton.SetBounds(ScaleX(650), ScaleY(420), ScaleX(75), ScaleY(25)); /// расположение кнопки отмены
    
    with ProgressBar do  /// прогресбар
    begin
      Parent := UninstallProgressForm
      SetBounds(ScaleX(10), ScaleY(370), ScaleX(727), ScaleY(25));
    end;

    /// если копирование этого и того файла в темп True, то
    if FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\Pic1.bmp'), ExpandConstant('{tmp}\Pic1.bmp'), True) and
       FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\Pic2.bmp'), ExpandConstant('{tmp}\Pic2.bmp'), True)
    then
    begin  /// создаём 2 безымянныйе картинки
      //unins background bitmap image
      with TBitmapImage.Create(nil) do
      begin
        Parent := UninstallProgressForm;
        Bitmap.LoadFromFile(ExpandConstant('{tmp}\Pic1.bmp')); /// грузим одну критнку
        SetBounds(ScaleX(0), ScaleY(0), ScaleX(750), ScaleY(352));
      end;

      with TBitmapImage.Create(nil) do
      begin
        Parent := UninstallProgressForm;
        Bitmap.LoadFromFile(ExpandConstant('{tmp}\Pic2.bmp')); /// грузим другую картинку
        SetBounds(ScaleX(0), ScaleY(352), ScaleX(750), ScaleY(352));
      end;
    end;
    OuterNotebook.Hide;   /// скрываем всё, что не нужно /// а все элементы UninstallProgressForm есть во вкладке компилятора расширенной версии "поддержка Inno Setup" на строке 2300
    MainPanel.Hide;
    Bevel1.Hide;
    StatusLabel.Hide;
    BeveledLabel.Hide;
    Bevel.Hide;
  end;
end;

function InitializeUninstall(): Boolean;
begin
    if FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\tiger.cjstyles'), ExpandConstant('{tmp}\tiger.cjstyles'), True) and
       FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), True)
    then
      LoadSkinU(ExpandConstant('{tmp}\tiger.cjstyles'), '');
        
    Result := True;
end;

procedure DeinitializeUninstall();
begin
    if FileExists(ExpandConstant('{tmp}\tiger.cjstyles')) and FileExists(ExpandConstant('{tmp}\isskin.dll')) then UnloadSkinU();
end;

procedure DeinitializeSetup;
begin
    UnloadSkin();
end;


и, Вань, зачем тебе 2 картинки?
склей в фотошопе в одну
(Создать - новый фон (настранваешь цвет фона и указываешь размер) - перетаскиваешь обе картинки на этот самый фон - растягиваешь и двигаешь до получения желаемого результата -
нажимаешь инструмент "Перемещение(V)" и при необходимости инструментом "Рамка (С)" кадрируешь (вырезаешь нужный участок)- сохраняешь в 32-битном(!).bmp - файле)
юзаю версию 5.1 (русскую)
Цитата Ivan_009:
Как сделать двойной прогресс бар тоесть вот такой через IsDone »
хз
исдан не знаю


------------------------------------------------------------------------------------Update
понял как добавлять картинки через Setup
пример в ...\Inno Setup 5\Examples\Example_BitmapResource.iss прояснил ситуацию!
сократил код
улучшенный результат:
читать дальше »
Код: Выделить весь код
#define MyAppName "test"

[Setup]
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName={pf}\{#MyAppName}
UsePreviousAppDir=false
UsePreviousGroup=false
AlwaysShowComponentsList=true
FlatComponentsList=false
UsePreviousSetupType=false
UsePreviousTasks=false
UsePreviousUserInfo=false
DisableStartupPrompt=true
UninstallFilesDir={app}\uninstall
BitmapResource=unins:Pic1.bmp|unins2:Pic2.bmp



[Files]
Source: tiger.cjstyles; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;
Source: isskin.dll; DestDir: {#SetupSetting("UninstallFilesDir")}; Attribs: hidden system;

[code]
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall setuponly';
procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall setuponly';
procedure LoadSkinU(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';
procedure UnloadSkinU(); external 'UnloadSkin@{tmp}\isskin.dll stdcall delayload uninstallonly';


function InitializeSetup:boolean;
begin
    ExtractTemporaryFile('tiger.cjstyles');
    LoadSkin(ExpandConstant('{tmp}\tiger.cjstyles'), '');

    Result := True;
end;


procedure InitializeUninstallProgressForm();
begin
  with UninstallProgressForm do
  begin
    Width := ScaleX(757); /// ширина формы
    Height := ScaleY(500); /// высота формы
    Position := poScreenCenter; /// расположение формы в центре экрана
    CancelButton.SetBounds(ScaleX(650), ScaleY(420), ScaleX(75), ScaleY(25)); /// расположение кнопки отмены

    with ProgressBar do  /// прогресбар
    begin
      Parent := UninstallProgressForm
      SetBounds(ScaleX(10), ScaleY(370), ScaleX(727), ScaleY(25));
    end;
    
    /// создаём 2 безымянныйе картинки
    with TBitmapImage.Create(nil) do
    begin
      Parent := UninstallProgressForm;
      Bitmap.LoadFromResourceName(HInstance, '_IS_UNINS'); /// грузим одну критнку
      SetBounds(ScaleX(0), ScaleY(0), ScaleX(750), ScaleY(352));
    end;
    
    with TBitmapImage.Create(nil) do
    begin
      Parent := UninstallProgressForm;
      Bitmap.LoadFromResourceName(HInstance, '_IS_UNINS2'); /// грузим другую картинку
      SetBounds(ScaleX(0), ScaleY(352), ScaleX(750), ScaleY(352));
    end;
    
    OuterNotebook.Hide;   /// скрываем всё, что не нужно /// а все элементы UninstallProgressForm есть во вкладке компилятора расширенной версии "поддержка Inno Setup" на строке 2300
    MainPanel.Hide;
    Bevel1.Hide;
    StatusLabel.Hide;
    BeveledLabel.Hide;
    Bevel.Hide;
  end;
end;

function InitializeUninstall(): Boolean;
begin
    if FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\tiger.cjstyles'), ExpandConstant('{tmp}\tiger.cjstyles'), True) and
       FileCopy(ExpandConstant('{#SetupSetting("UninstallFilesDir")}\isskin.dll'), ExpandConstant('{tmp}\isskin.dll'), True)
    then
      LoadSkinU(ExpandConstant('{tmp}\tiger.cjstyles'), '');

    Result := True;
end;

procedure DeinitializeUninstall();
begin
    if FileExists(ExpandConstant('{tmp}\tiger.cjstyles')) and FileExists(ExpandConstant('{tmp}\isskin.dll')) then UnloadSkinU();
end;

procedure DeinitializeSetup;
begin
    UnloadSkin();
end;

изменённые строки выделил жирным (3 строки)

Последний раз редактировалось Johny777, 06-07-2012 в 13:08.

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

Отправлено: 22:48, 05-07-2012 | #385