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

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

Аватара для Johny777

Ветеран


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

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


habib2302,
Цитата habib2302:
.Как сделаль (добавить) в инсталлятор и деинсталлятор Wizard Small Image и Wizard Image без фона? »
Использовать ботву (botva2.dll от South) для прозрачных картинок, но тк тебе ещё и для деинсталятора, то проще всего запихать картинки и библиотеку в ресурсы (в экзешник) и грузить оттуда
Важно: в соглашении вызова импортируемых из библы функциий указать delayload (вроде как стоит по дефолту)

код(целых 87 строк ):
читать дальше »
Код: Выделить весь код
#include "botva2.iss"
[Setup]
AppName=DrawImageExample by South.Tver
AppVerName=DrawImageExample by South.Tver
DefaultDirName={pf}\ImageExample
OutputBaseFilename=setup
RawDataResource=Botva:botva2.dll|bPic:bPic.png|LiPic:LiPic.png|aPic:aPic.png

[Code]
const
    AXEL_YELLOW = $48c1ca;
    RT_RCDATA = 10;


function GetFromRes(const ResName, SaveFileName: String): Boolean;
var
    lResStream: TResourceStream;
begin
    lResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
    try
        lResStream.SaveToFile(ExpandConstant('{tmp}\') + SaveFileName);
    finally
        lResStream.Free;
        Result := FileExists(ExpandConstant('{tmp}\') + SaveFileName);
    end;
end;


procedure InitializeWizard;
var
    bPicHandle, bPicHandle2, lPicHandle: THandle;
begin
    with WizardForm do
    begin
        WelcomePage.Color := AXEL_YELLOW;
        MainPanel.Color := AXEL_YELLOW;

        if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_BPIC', 'bPic.png') and GetFromRes('_IS_LIPIC', 'LiPic.png') and GetFromRes('_IS_APIC', 'aPic.png') then
        begin
            bPicHandle := ImgLoad(WelcomePage.Handle, ExpandConstant('{tmp}\aPic.png'), WizardBitmapImage.Left, WizardBitmapImage.Top, WizardBitmapImage.Width, WizardBitmapImage.Height, True, True);
            WizardBitmapImage.Hide;
            ImgSetVisibility(bPicHandle, True);
            ImgApplyChanges(WelcomePage.Handle);
            
            bPicHandle := ImgLoad(FinishedPage.Handle, ExpandConstant('{tmp}\bPic.png'), WizardBitmapImage2.Left, WizardBitmapImage2.Top, WizardBitmapImage2.Width, WizardBitmapImage2.Height, True, True);
            WizardBitmapImage2.Hide;
            ImgSetVisibility(bPicHandle, True);
            ImgApplyChanges(FinishedPage.Handle);
            
            lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
            WizardSmallBitmapImage.Hide;
            ImgSetVisibility(lPicHandle, True);
            ImgApplyChanges(MainPanel.Handle);
        end;
    end;
end;

procedure DeinitializeSetup();
begin
    if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;

/////////////////////////////////////////////////////////////////////

procedure InitializeUninstallProgressForm();
var
    lPicHandle: THandle;
begin
    with UninstallProgressForm do
    begin
        MainPanel.Color := AXEL_YELLOW;
    
        if GetFromRes('_IS_BOTVA', 'botva2.dll') and GetFromRes('_IS_LIPIC', 'LIPic.png') then
        begin
            lPicHandle := ImgLoad(MainPanel.Handle, ExpandConstant('{tmp}\LiPic.png'), WizardSmallBitmapImage.Left, WizardSmallBitmapImage.Top, WizardSmallBitmapImage.Width, WizardSmallBitmapImage.Height, True, True);
            WizardSmallBitmapImage.Hide;
            ImgSetVisibility(lPicHandle, True);
            ImgApplyChanges(MainPanel.Handle);
        end;
    end;
end;

procedure DeinitializeUninstall();
begin
    if FileExists(ExpandConstant('{tmp}\') + 'botva2.dll') then gdipShutDown();
end;


скрин:


архив с примером и со всем необходимым:
http://sendfile.su/788305

PS: для себя я бы не выносил загрузку ресурсов в функцию function GetFromRes(const ResName, SaveFileName: String): Boolean; с точки зрения оптимизации скорости работы
но думаю так будет проще понять что к чему. Потом поменяешь, если захочешь!
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:09, 02-04-2013 | #57