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

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

Аватара для A1EXXX

Старожил


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

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


Dark Engel, попробуй это (через InitializeWizard):
читать дальше »
Код: Выделить весь код
;Глобальные переменные
#define MyAppName "***"
#define MyAppVerName "***"
#define MyAppPublisher "***"
#define MyAppExeName "***.exe"

;Подключение шаблона скина скина
[ISPP]
#define SkinFile "C:\Program Files\HiSoft\Inno Script Generator\Include\SkinCrafter\strait.skf"
#define SkinFolder "C:\Program Files\HiSoft\Inno Script Generator\Include\SkinCrafter"
#include SkinFolder + "\SkinCrafter.inc"

[Setup]
AppId={{BE611A8E-150F-4A38-ADAB-DC1E7BF2A8B8}
;Имя программы.
AppName={#MyAppName}
;имя с версией.
AppVerName={#MyAppVerName}
;Издатель.
AppPublisher={#MyAppPublisher}
;Версия сборки.
VersionInfoVersion=1.1.3
;Путь установки.
DefaultDirName={pf}\***
;Отключение выбора пути установки.
DisableDirPage=yes
;Имя группы в меню.
DefaultGroupName={#MyAppName}
;Отключение запроса имени группы.
DisableProgramGroupPage=yes
;Отключение страницы "Все готово к установке".
DisableReadyPage=yes
;Путь сборки инсталятора.
OutputDir=D:\Fup\***\Output
;Имя фаила инсталяции.
OutputBaseFilename=***Setup
;Скин инсталятора.
WizardImageFile=Left.bmp
WizardSmallImageFile=Up.bmp
;Иконка инсталятора.
SetupIconFile=Setup.ico
;Уровень сжатия инсталятора.
Compression=lzma/ultra
SolidCompression=yes
;Запрет кнопки "Отмена" во время установки.
AllowCancelDuringInstall=no
;Минимальная версия Windows для установки.
MinVersion=4.0,5.01

[Languages]
;Язык установки.
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
;Создание ярлыка.

;Файлы для упаковки в инсталятор.
[Files]
;Служебные файлы инсталятора.
Source: Wallpaper.jpg; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: bass.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: innocallback.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: Sound.mp3; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

;Файлы для установки.
Source: ***


[Icons]
;Пункты меню в группе.
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Comment: ***
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Comment: ***

[Messages]
;Оформление инсталятора.
BeveledLabel=---***---

;Удаление ключа реестра при деинсталяции.
[Registry]
Root: HKLM; Subkey: Software\***; ValueType: dword; ValueName: ***; Flags: dontcreatekey uninsdeletevalue; ValueData: 3

;Удаление файла настроек при деинсталяции.
[UninstallDelete]
Name: {app}\***.ini; Type: files

;Блок кода. Запуск музыки, проверка версии, скин.

[code]
type
  HSTREAM=DWORD;
  TTimerProc=procedure(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
var
  MP3List:TStringList;
  CurrentMP3:integer;
  hMP3:HWND;
  TimerID:LongWord;

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boolean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';
function SetTimer(hWnd:HWND;nIDEvent,uElapse:UINT;lpTimerFunc:LongWord{TFNTimerProc}):UINT;  external 'SetTimer@user32.dll stdcall delayload';
function KillTimer(hWnd:HWND;uIDEvent:UINT):BOOL; external 'KillTimer@user32.dll stdcall delayload';
function BASS_ChannelIsActive(Handle:HWND):DWORD; external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_SetConfig(Option,Value:DWORD):DWORD; external 'BASS_SetConfig@files:bass.dll stdcall';
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';
function BASS_StreamFree(Handle:HWND):boolean; external 'BASS_StreamFree@files:bass.dll stdcall';
function BASS_ChannelPlay(Handle:HWND;Restart:boolean):boolean; external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_Start: Boolean; external 'BASS_Start@files:bass.dll stdcall';
function BASS_Stop: Boolean; external 'BASS_Stop@files:bass.dll stdcall';
function BASS_Free: Boolean; external 'BASS_Free@files:bass.dll stdcall delayload';
function WrapTimerProc(CallBack:TTimerProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall';

procedure TimerTick(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
begin
  if BASS_ChannelIsActive(hMP3)=0 then begin
    BASS_Stop;
    BASS_StreamFree(hMP3);
    hMP3:=BASS_StreamCreateFile(False,PChar(MP3List.Strings[CurrentMP3]),0,0,0);
    BASS_Start;
    if hMP3<>0 then
      if BASS_ChannelPlay(hMP3,True) then begin
        CurrentMP3:=CurrentMP3+1;
        if CurrentMP3>MP3List.Count-1 then CurrentMP3:=0;
      end;
  end;
end;

function InitializeSetup1:boolean;
begin
  ExtractTemporaryFile('Sound.mp3');
  MP3List:=TStringList.Create;
  MP3List.Add(ExpandConstant('{tmp}')+'\Sound.mp3');
  CurrentMP3:=0;
  Result:=True;
end;

procedure InitializeWizard1;
begin
  TimerID:=SetTimer(0,0,500,WrapTimerProc(@TimerTick,5));
  BASS_Init(-1,44100,0,0,0);
  BASS_SetConfig(5,100);
  BASS_SetConfig(6,100);
  ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,1,$FF000000);
  ExtractTemporaryFile('Wallpaper.jpg');
  ssSetBkgImage(ExpandConstant('{tmp}')+'\Wallpaper.jpg');
end;

procedure DeinitializeSetup1;
begin
  KillTimer(0,TimerID);
  BASS_Stop;
  BASS_Free;
  MP3List.Free;
  ssDeInitialize;
end;

//Настройка подключения к серверу.
procedure MyAfterInstall();
var
I: String;

begin
   if RegQueryStringValue(HKCU, '***', 'DefaultSystem', I)
      then
      SaveStringToFile('C:\Program Files\***.ini', I, true);
      SaveStringToFile('C:\Program Files\***.ini', #13#10 + 'true', true);
end;

//проверка на установленность и версию.
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
  Names: TArrayOfString;
  ResultDWord: Cardinal;
  i: Integer;
  msg: string;
begin
  Result:= True;
  if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***', Names) then
    begin
      for i:= 0 to GetArrayLength(Names)-1 do
        if Lowercase(ProgName) = Lowercase(Names[i]) then
          begin
            RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\***', Names[i], ResultDWord);
            if ResultDWord > ver then
              begin
                msg:= 'Установленная версия *** новее.';
                Result:= False;
                MsgBox(msg, mbInformation, MB_OK);
              end
            else
            if ResultDWord = ver then
              begin
                Result:= True;
              end;
            Break;
          end;
    end;
//Запись версии устанавливаемой программы.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\***', '***', 3);
end;

function InitializeSetup2(): Boolean;
begin
  // Имя программы и версия для проверки.
  Result:= DetectInstall('***', 3);
end;


//Проверка версии ***
function DetectInstall1(ProgName: string; ver: string): Boolean;
var
  Names: TArrayOfString;
  o: Integer;
  ResultStr, msg: string;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\***') then
 begin
  Result:= True;
  if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***', Names) then
    begin
      for o:= 0 to GetArrayLength(Names)-1 do
        if Lowercase(ProgName) = Lowercase(Names[o]) then
          begin
            RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\***', Names[o], ResultStr);
            if ResultStr = ver then
              begin
                Result:= True;
              end
            else
              begin
                msg:= 'Установлена версия *** для ***.' #13#10 + 'Продолжение установки невозможно.';
                Result:= False;
                MsgBox(msg, mbInformation, MB_OK);
              end;
            Break;
          end;
    end;
 end
else
begin
msg:= '*** не установлен.' #13#10 + 'Дальнейшая установка невозможна.';
Result:= False;
MsgBox(msg, mbInformation, MB_OK);
end;
end;

function InitializeSetup3(): Boolean;
begin
  // Имя программы и версия для проверки.
  Result:= DetectInstall1('Current***Level', '***');
end;

function InitializeSetup(): Boolean;
begin
  Result := InitializeSetup1(); if not Result then exit;
  Result := InitializeSetup2(); if not Result then exit;
  Result := InitializeSetup3(); if not Result then exit;
end;

procedure InitializeWizard();
begin
  InitializeWizard1();
  SkinCrafter_InitializeWizard();
  WizardForm.FilenameLabel.Hide();
end;

procedure DeinitializeSetup();
begin
  DeinitializeSetup1();
end;

//Подключение скина.
var Rect: TRect; hIcon: LongInt;

function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt; external 'DrawIconEx@user32.dll stdcall';
function LoadImage(hInst: LongInt; lpszExeFileName: PChar; uType: DWord; cxDesired, cyDesired: LongInt; fuLoad: DWord): hWnd; external 'LoadImageA@user32.dll stdcall';
function LoadBitmap(hInst: LongInt; lpBitmapName: PChar): HBITMAP; external 'LoadBitmapA@user32.dll stdcall';

или это (через CurPageChanged):
читать дальше »
Код: Выделить весь код
;Глобальные переменные
#define MyAppName "***"
#define MyAppVerName "***"
#define MyAppPublisher "***"
#define MyAppExeName "***.exe"

;Подключение шаблона скина скина
[ISPP]
#define SkinFile "C:\Program Files\HiSoft\Inno Script Generator\Include\SkinCrafter\strait.skf"
#define SkinFolder "C:\Program Files\HiSoft\Inno Script Generator\Include\SkinCrafter"
#include SkinFolder + "\SkinCrafter.inc"

[Setup]
AppId={{BE611A8E-150F-4A38-ADAB-DC1E7BF2A8B8}
;Имя программы.
AppName={#MyAppName}
;имя с версией.
AppVerName={#MyAppVerName}
;Издатель.
AppPublisher={#MyAppPublisher}
;Версия сборки.
VersionInfoVersion=1.1.3
;Путь установки.
DefaultDirName={pf}\***
;Отключение выбора пути установки.
DisableDirPage=yes
;Имя группы в меню.
DefaultGroupName={#MyAppName}
;Отключение запроса имени группы.
DisableProgramGroupPage=yes
;Отключение страницы "Все готово к установке".
DisableReadyPage=yes
;Путь сборки инсталятора.
OutputDir=D:\Fup\***\Output
;Имя фаила инсталяции.
OutputBaseFilename=***Setup
;Скин инсталятора.
WizardImageFile=Left.bmp
WizardSmallImageFile=Up.bmp
;Иконка инсталятора.
SetupIconFile=Setup.ico
;Уровень сжатия инсталятора.
Compression=lzma/ultra
SolidCompression=yes
;Запрет кнопки "Отмена" во время установки.
AllowCancelDuringInstall=no
;Минимальная версия Windows для установки.
MinVersion=4.0,5.01

[Languages]
;Язык установки.
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
;Создание ярлыка.

;Файлы для упаковки в инсталятор.
[Files]
;Служебные файлы инсталятора.
Source: Wallpaper.jpg; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: bass.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: innocallback.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: Sound.mp3; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

;Файлы для установки.
Source: ***


[Icons]
;Пункты меню в группе.
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Comment: ***
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Comment: ***

[Messages]
;Оформление инсталятора.
BeveledLabel=---***---

;Удаление ключа реестра при деинсталяции.
[Registry]
Root: HKLM; Subkey: Software\***; ValueType: dword; ValueName: ***; Flags: dontcreatekey uninsdeletevalue; ValueData: 3

;Удаление файла настроек при деинсталяции.
[UninstallDelete]
Name: {app}\***.ini; Type: files

;Блок кода. Запуск музыки, проверка версии, скин.

[code]
type
  HSTREAM=DWORD;
  TTimerProc=procedure(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
var
  MP3List:TStringList;
  CurrentMP3:integer;
  hMP3:HWND;
  TimerID:LongWord;

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';
function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boolean; external 'ssInitialize@files:isgsg.dll stdcall delayload';
procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';
procedure ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';
function SetTimer(hWnd:HWND;nIDEvent,uElapse:UINT;lpTimerFunc:LongWord{TFNTimerProc}):UINT;  external 'SetTimer@user32.dll stdcall delayload';
function KillTimer(hWnd:HWND;uIDEvent:UINT):BOOL; external 'KillTimer@user32.dll stdcall delayload';
function BASS_ChannelIsActive(Handle:HWND):DWORD; external 'BASS_ChannelIsActive@files:bass.dll stdcall';
function BASS_SetConfig(Option,Value:DWORD):DWORD; external 'BASS_SetConfig@files:bass.dll stdcall';
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';
function BASS_StreamFree(Handle:HWND):boolean; external 'BASS_StreamFree@files:bass.dll stdcall';
function BASS_ChannelPlay(Handle:HWND;Restart:boolean):boolean; external 'BASS_ChannelPlay@files:bass.dll stdcall';
function BASS_Start: Boolean; external 'BASS_Start@files:bass.dll stdcall';
function BASS_Stop: Boolean; external 'BASS_Stop@files:bass.dll stdcall';
function BASS_Free: Boolean; external 'BASS_Free@files:bass.dll stdcall delayload';
function WrapTimerProc(CallBack:TTimerProc;ParamCount:integer):LongWord; external 'wrapcallback@files:innocallback.dll stdcall';

procedure TimerTick(uTimerID,uMessage:UINT;dwUser,dw1,dw2:DWORD);
begin
  if BASS_ChannelIsActive(hMP3)=0 then begin
    BASS_Stop;
    BASS_StreamFree(hMP3);
    hMP3:=BASS_StreamCreateFile(False,PChar(MP3List.Strings[CurrentMP3]),0,0,0);
    BASS_Start;
    if hMP3<>0 then
      if BASS_ChannelPlay(hMP3,True) then begin
        CurrentMP3:=CurrentMP3+1;
        if CurrentMP3>MP3List.Count-1 then CurrentMP3:=0;
      end;
  end;
end;

function InitializeSetup1:boolean;
begin
  ExtractTemporaryFile('Sound.mp3');
  MP3List:=TStringList.Create;
  MP3List.Add(ExpandConstant('{tmp}')+'\Sound.mp3');
  CurrentMP3:=0;
  Result:=True;
end;

procedure InitializeWizard1;
begin
  TimerID:=SetTimer(0,0,500,WrapTimerProc(@TimerTick,5));
  BASS_Init(-1,44100,0,0,0);
  BASS_SetConfig(5,100);
  BASS_SetConfig(6,100);
  ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,1,$FF000000);
  ExtractTemporaryFile('Wallpaper.jpg');
  ssSetBkgImage(ExpandConstant('{tmp}')+'\Wallpaper.jpg');
end;

procedure DeinitializeSetup1;
begin
  KillTimer(0,TimerID);
  BASS_Stop;
  BASS_Free;
  MP3List.Free;
  ssDeInitialize;
end;

//Настройка подключения к серверу.
procedure MyAfterInstall();
var
I: String;

begin
   if RegQueryStringValue(HKCU, '***', 'DefaultSystem', I)
      then
      SaveStringToFile('C:\Program Files\***.ini', I, true);
      SaveStringToFile('C:\Program Files\***.ini', #13#10 + 'true', true);
end;

//проверка на установленность и версию.
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
  Names: TArrayOfString;
  ResultDWord: Cardinal;
  i: Integer;
  msg: string;
begin
  Result:= True;
  if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***', Names) then
    begin
      for i:= 0 to GetArrayLength(Names)-1 do
        if Lowercase(ProgName) = Lowercase(Names[i]) then
          begin
            RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\***', Names[i], ResultDWord);
            if ResultDWord > ver then
              begin
                msg:= 'Установленная версия *** новее.';
                Result:= False;
                MsgBox(msg, mbInformation, MB_OK);
              end
            else
            if ResultDWord = ver then
              begin
                Result:= True;
              end;
            Break;
          end;
    end;
//Запись версии устанавливаемой программы.
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'Software\***', '***', 3);
end;

function InitializeSetup2(): Boolean;
begin
  // Имя программы и версия для проверки.
  Result:= DetectInstall('***', 3);
end;


//Проверка версии ***
function DetectInstall1(ProgName: string; ver: string): Boolean;
var
  Names: TArrayOfString;
  o: Integer;
  ResultStr, msg: string;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\***') then
 begin
  Result:= True;
  if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\***', Names) then
    begin
      for o:= 0 to GetArrayLength(Names)-1 do
        if Lowercase(ProgName) = Lowercase(Names[o]) then
          begin
            RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\***', Names[o], ResultStr);
            if ResultStr = ver then
              begin
                Result:= True;
              end
            else
              begin
                msg:= 'Установлена версия *** для ***.' #13#10 + 'Продолжение установки невозможно.';
                Result:= False;
                MsgBox(msg, mbInformation, MB_OK);
              end;
            Break;
          end;
    end;
 end
else
begin
msg:= '*** не установлен.' #13#10 + 'Дальнейшая установка невозможна.';
Result:= False;
MsgBox(msg, mbInformation, MB_OK);
end;
end;

function InitializeSetup3(): Boolean;
begin
  // Имя программы и версия для проверки.
  Result:= DetectInstall1('Current***Level', '***');
end;

function InitializeSetup(): Boolean;
begin
  Result := InitializeSetup1(); if not Result then exit;
  Result := InitializeSetup2(); if not Result then exit;
  Result := InitializeSetup3(); if not Result then exit;
end;

procedure InitializeWizard();
begin
  InitializeWizard1();
  SkinCrafter_InitializeWizard();
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
    if CurPageID=wpInstalling then
        WizardForm.FileNameLabel.Hide;
     end;

procedure DeinitializeSetup();
begin
  DeinitializeSetup1();
end;

//Подключение скина.
var Rect: TRect; hIcon: LongInt;

function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall';
function ExtractIcon(hInst: LongInt; lpszExeFileName: PChar; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall';
function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur, hbrFlickerFreeDraw, diFlags: LongInt): LongInt; external 'DrawIconEx@user32.dll stdcall';
function LoadImage(hInst: LongInt; lpszExeFileName: PChar; uType: DWord; cxDesired, cyDesired: LongInt; fuLoad: DWord): hWnd; external 'LoadImageA@user32.dll stdcall';
function LoadBitmap(hInst: LongInt; lpBitmapName: PChar): HBITMAP; external 'LoadBitmapA@user32.dll stdcall';
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 18-12-2009 | #712