Старожил
Сообщения: 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';
|