в скрипте удалил? и как скомпилилось? мне прям интересно :oхм,а как сделать чтобы файлы не попадали в папку темп? я destdir удалил,но файлы в темп все-равно кидаются
Извлекать в другую папку, в память, просто напросто скрывать...хм,а как сделать чтобы файлы не попадали в папку темп? я destdir удалил,но файлы в темп все-равно кидаются
Все зависит от поставленной задачи. Если там будут лежать файлы, использующиеся во время установки, то папку и не удалить - система сама не даст удалить. В остальных случая можно что-нибудь придумать.Как удалить после себя создаваемые inno папки в {tmp}?
Или если создать свою папку в {tmp} то как запретить её удаление пока запущен установщик?
Только если у них будет установлен флаг deleteafterinstallsergey3695, а если указать {app}/temp,то потом после установки с папки с игрой они удалятся?
А как их скрыть?просто напросто скрывать...
А как их скрыть?
Source: "myfile.bmp"; DestDir: "{tmp}"; [b]Attribs: hidden system[/b]
function SetFileAttributes(lpFileName: PAnsiChar; dwFileAttributes: Longword): Boolean; external 'SetFileAttributesA@kernel32.dll stdcall';
***
SetFileAttributes(PAnsiChar(ExpandConstant('{tmp}\myfile.bmp')), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM or FILE_ATTRIBUTE_NORMAL);
procedure InitializeWizard();
begin
with WizardForm.DirBrowseButton do
begin
Top := ScaleY(73);
end;
with WizardForm.DirEdit do
begin
Top := ScaleY(73);
end;
with WizardForm.SelectDirBrowseLabel do
begin
Top := ScaleY(36);
end;
with WizardForm.SelectGroupBitmapImage do
begin
Top := ScaleY(105);
Parent := WizardForm.SelectDirPage;
end;
with WizardForm.GroupBrowseButton do
begin
Top := ScaleY(176);
Parent := WizardForm.SelectDirPage;
end;
with WizardForm.GroupEdit do
begin
Top := ScaleY(177);
Parent := WizardForm.SelectDirPage;
end;
with WizardForm.SelectStartMenuFolderBrowseLabel do
begin
Parent := WizardForm.SelectDirPage;
Top := ScaleY(140);
end;
with WizardForm.SelectStartMenuFolderLabel do
begin
Parent := WizardForm.SelectDirPage;
Top := ScaleY(113);
end;
end;[/SPOILER]
[SPOILER="сделал короче"][Code]
procedure InitializeWizard();
begin
WizardForm.DirBrowseButton.Top := ScaleY(73);
WizardForm.DirEdit.Top := ScaleY(73);
WizardForm.SelectDirBrowseLabel.Top := ScaleY(36);
WizardForm.SelectGroupBitmapImage.Top := ScaleY(105);
WizardForm.SelectGroupBitmapImage.Parent := WizardForm.SelectDirPage;
WizardForm.GroupBrowseButton.Top := ScaleY(176);
WizardForm.GroupBrowseButton.Parent := WizardForm.SelectDirPage;
WizardForm.GroupEdit.Top := ScaleY(177);
WizardForm.GroupEdit.Parent := WizardForm.SelectDirPage;
WizardForm.SelectStartMenuFolderBrowseLabel.Top := ScaleY(140);
WizardForm.SelectStartMenuFolderBrowseLabel.Parent := WizardForm.SelectDirPage;
WizardForm.SelectStartMenuFolderLabel.Top := ScaleY(113);
WizardForm.SelectStartMenuFolderLabel.Parent := WizardForm.SelectDirPage;
end;[/SPOILER]
type
TWaveOutCaps = record vPid, vDriverVersion: DWord; sName: array[0..31] of Char; Formats: DWord; Channels: Word; Support: DWord; end; PDisplay_Device = record cb: DWord; DeviceName: array[0..31] of Char; DeviceString: array[0..127] of Char; StateFlags: DWord; DeviceID, DeviceKey: array[0..127] of Char; end;
Const
oneMB= 1024*1024; DISPLAY_DEVICE_PRIMARY_DEVICE = 4;
var
Report: String; n, errCode: Integer; lpCaps: TWaveOutCaps; lpDisplayDevice: PDisplay_Device; DeviceValue: Cardinal; VideoName, SoundName, MixerName, DeviceKey: String; Keys: TArrayOfString;
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord):Boolean; external 'EnumDisplayDevicesA@user32.dll stdcall';
function waveOutGetDevCaps(uDeviceID: LongInt; var lpCaps: TWaveOutCaps; uSize: LongInt): LongInt; external 'waveOutGetDevCapsA@winmm.dll stdcall';
function waveOutGetNumDevs: Integer; external 'waveOutGetNumDevs@winmm.dll stdcall';
function mixerGetDevCaps(uDeviceID: LongInt; var lpCaps: TWaveOutCaps; uSize: LongInt): LongInt; external 'mixerGetDevCapsA@winmm.dll stdcall';
function mixerGetNumDevs: Integer; external 'mixerGetNumDevs@winmm.dll stdcall';
Function InitializeSetup: Boolean;
Begin
{video}
lpDisplayDevice.cb:= SizeOf(lpDisplayDevice);
n:= 0; while not (EnumDisplayDevices(0, n, lpDisplayDevice, 0) and (lpDisplayDevice.StateFlags and DISPLAY_DEVICE_PRIMARY_DEVICE > 0)) and (n < 127) do n:= n +1
for n:= 0 to 127 do
DeviceKey:= DeviceKey + lpDisplayDevice.DeviceKey[n]; Delete(DeviceKey, Pos(Chr(0), DeviceKey), 127); { ключ драйвера получаем из API }
StringChange(DeviceKey,'\Registry\Machine\',''); errCode:= 1; DeviceValue:= 0; { объём видеопамяти }
RegQueryBinaryValue(HKLM, DeviceKey, 'HardwareInformation.MemorySize', VideoName) { проверку 9х или NT не делаю }
for n:= 1 to Length(VideoName) do
begin
DeviceValue:= DeviceValue + Ord(VideoName[n]) *errCode; errCode:= errCode * $100; end;
VideoName:= ''; for n:= 0 to 127 do VideoName:= VideoName + lpDisplayDevice.DeviceString[n]; Delete(VideoName, Pos(Chr(0), VideoName), 127);
if VideoName <> '' then
if DeviceValue > 0 then VideoName:= VideoName +', '+ IntToStr(DeviceValue/oneMB) + 'Mb' else VideoName:= VideoName +' (стандартный драйвер)'
else VideoName:= 'Ошибка драйвера или оборудования'
{sound}
for errCode:= 0 to waveOutGetNumDevs do begin
waveOutGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps)); SoundName:=''
for n:= 0 to 31 do SoundName:= SoundName + lpCaps.sName[n]; Delete(SoundName, Pos(Chr(0), SoundName), 31);
SetArrayLength(Keys, errCode+1); if errCode+1 > 0 then Keys[errCode]:= SoundName
end;
SoundName:= #9
if errCode > 0 then
for n:= 0 to GetArrayLength(Keys) -1 do
SoundName:= SoundName + Keys[n] + #13#10#9
else SoundName:= #9 'Звуковые устройства не обнаружены'
{mixer}
for errCode:= 0 to mixerGetNumDevs do begin
mixerGetDevCaps(errCode-1, lpCaps, SizeOf(lpCaps)); MixerName:=''
for n:= 0 to 31 do MixerName:= MixerName + lpCaps.sName[n]; Delete(MixerName, Pos(Chr(0), MixerName), 31);
SetArrayLength(Keys, errCode); if errCode > 0 then Keys[errCode-1]:= MixerName
end;
MixerName:= #9
if errCode > 0 then
for n:= 0 to GetArrayLength(Keys) -1 do
MixerName:= MixerName + Keys[n] + #13#10#9
else MixerName:= #9 'Звуковые устройства не обнаружены'
Report:= 'Video: '#9 + VideoName + #13#10 'Key: '#9 + DeviceKey + #13#10#13 'SoundCards: '#13#10 + SoundName + #13#10 'MixerDev: '#13#10 + MixerName
MsgBox(Report, mbInformation, mb_Ok)
SaveStringToFile('Report.txt', Report, True);
End;[/SPOILER]
[_code]
const
GL_RENDERER = $1F01;
GL_VENDOR = $1F00;
PFD_DRAW_TO_WINDOW = 4;
PFD_SUPPORT_OPENGL = 32;
PFD_DOUBLEBUFFER = 1;
PFD_TYPE_RGBA = 0;
PFD_MAIN_PLANE = 0;
type
TPixelFormatDescriptor = record
nSize, nVersion: Word;
dwFlags: DWORD;
iPixelType, cColorBits, cRedBits, cRedShift, cGreenBits, cGreenShift,
cBlueBits, cBlueShift, cAlphaBits, cAlphaShift, cAccumBits, cAccumRedBits,
cAccumGreenBits, cAccumBlueBits, cAccumAlphaBits, cDepthBits, cStencilBits, cAuxBuffers: Byte;
iLayerType, bReserved: Byte;
dwLayerMask, dwVisibleMask, dwDamageMask: DWORD;
end;
procedure RtlZeroMemory(destination: TPixelFormatDescriptor; length: dword); external 'RtlZeroMemory@kernel32';
function glGetString(index: Integer): PAnsichar; external 'glGetString@opengl32.dll stdcall';
function wglCreateContext(DC: Cardinal): Cardinal; external 'wglCreateContext@opengl32';
function wglDeleteContext(p1: Cardinal): BOOL; external 'wglCreateContext@opengl32';
function wglMakeCurrent(DC: Cardinal; p2: Cardinal): BOOL; external 'wglMakeCurrent@opengl32';
function GetDC(hWnd: HWND): Cardinal; external 'GetDC@user32';
function ReleaseDC(hWnd: HWND; hDC: Cardinal): Integer; external 'ReleaseDC@user32';
function ChoosePixelFormat(DC: Cardinal; p2: TPixelFormatDescriptor): Integer; external 'ChoosePixelFormat@gdi32';
function SetPixelFormat(DC: Cardinal; PixelFormat: Integer; FormatDef: TPixelFormatDescriptor): BOOL; external 'SetPixelFormat@gdi32';
procedure EnableOpenGL(h: HWND; var Dc: Cardinal; var hRC: cardinal);
var
pfd: TPixelFormatDescriptor;
iFormat: Integer;
begin
Dc := GetDC(h);
RtlZeroMemory(pfd, sizeof(pfd));
pfd.nSize := sizeof(pfd);
pfd.nVersion := 1;
pfd.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
pfd.iPixelType := PFD_TYPE_RGBA;
pfd.cColorBits := 24;
pfd.cDepthBits := 32;
pfd.iLayerType := PFD_MAIN_PLANE;
iFormat := ChoosePixelFormat(Dc, pfd);
SetPixelFormat(DC, iFormat, pfd);
hRC := wglCreateContext(Dc);
wglMakeCurrent(dc, hRC);
end;
procedure DisableOpenGL (h: HWND; dc: Cardinal; hRC: Cardinal);
begin
wglMakeCurrent(0, 0);
wglDeleteContext(hRC);
ReleaseDC(h, dc);
end;
var
h, hdc, hrc: cardinal;
vendor, renderer : PAnsichar;
procedure InitializeWizard();
begin
h := WizardForm.Handle;
EnableOpenGL(h, hdc, hrc);
vendor := glGetString(GL_VENDOR);
renderer := glGetString(GL_RENDERER);
wizardform.welcomelabel2.font.size := 11;
wizardform.welcomelabel2.caption := 'Производитель: ' + vendor + #13#10 + 'Адаптер: ' + renderer;
MsgBox('Производитель: ' + vendor + #13#10 + 'Адаптер: ' + renderer, mbInformation, MB_OK);
DisableOpenGL(h, hdc, hrc);
end;
type
PDisplay_Device = record
cb: DWord;
DeviceName: array [0..31] of Ansichar;
DeviceString: array [0..127] of Ansichar;
end;
var
lpDisplayDevice: PDisplay_Device;
n: Integer;
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean; external 'EnumDisplayDevicesA@user32.dll stdcall';
procedure InitializeWizard;
begin
Wizardform.WelcomeLabel2.Caption := ''; // Это можно убрать если передавать на другой лейбл
lpDisplayDevice.cb := SizeOf(lpDisplayDevice);
if not EnumDisplayDevices(0, 0, lpDisplayDevice, 0) then Wizardform.WelcomeLabel1.Caption:= 'Видеокарта не определена' else
for n := 0 to 127 do Wizardform.WelcomeLabel2.Caption := Wizardform.WelcomeLabel2.Caption + lpDisplayDevice.DeviceString[n];
end;
#define A = (Defined UNICODE) ? "W" : "A"
[Setup]
AppName=Приложение
AppVerName=Приложение
DefaultDirName={pf}\123
AppendDefaultDirName=no
OutputDir=.
[_code]
type
PDisplay_Device = record
cb: DWord;
#ifdef UNICODE
DeviceName: array[0..31] of AnsiChar;
DeviceString: array[0..127] of AnsiChar;
#else
DeviceName: array[0..31] of Char;
DeviceString: array[0..127] of Char;
#endif
end;
var
lpDisplayDevice: PDisplay_Device;
n: Integer;
S: AnsiString;
function EnumDisplayDevices(lpDevice, iDevNum: DWord; var lpDisplayDevice: PDisplay_Device; dwFlags: DWord): Boolean; external 'EnumDisplayDevicesA@user32.dll stdcall';
function InitializeSetup: Boolean;
begin
lpDisplayDevice.cb := SizeOf(lpDisplayDevice);
if not EnumDisplayDevices(0, 0, lpDisplayDevice, 0) then S:= 'Видеокарта не определена' else
for n := 0 to 127 do S := S + lpDisplayDevice.DeviceString[n];
MsgBox(S, mbInformation, MB_OK);
Result:=false;
end;
[Setup]
AppName=My Application
AppVerName=1.5
DefaultDirName={pf}\My Application
[B][[/B]Code]
function GetVideoControllerName: String;
var
objSWbemLocator, objSWbemServices: Variant;
begin
try
objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
except
ShowExceptionMessage;
Exit;
end;
objSWbemServices := objSWbemLocator.ConnectServer();
objSWbemServices.Security_.ImpersonationLevel := 3;
try
Result := objSWbemServices.ExecQuery('SELECT Name FROM Win32_VideoController WHERE Availability=3').Item('Win32_VideoController="VideoController1"').Properties_.Item('Name').Value;
except
end;
end;
procedure InitializeWizard;
begin
MsgBox(GetVideoControllerName, mbInformation, MB_OK);
end;