Shift85
Старожил
sergey3695, Кнопка обзор слетает: http://rghost.ru/52222726
				
			Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
procedure ShowComponents(CurPageID: Integer);
begin
SetStateNewButtons(CurPageID); // ОБНОВЛЯЕМ ТЕКСТУРЫ КНОПОК
case CurPageID of
wpSelectDir: // СТРАНИЦА ВЫБОРА ПАПКИ НАЗНАЧЕНИЯ
begin
GetFreeSpaceCaption(nil)
WizardForm.DirEdit.Show;
WizardForm.DirBrowseButton.Show;
[B]UpdateButton(WizardForm.DirBrowseButton,3);[/B]
NeedSpaceLabel.Show;
FreeSpaceLabel.Show;
end;
end;
end;procedure UpdateButton(AButton: TButton;AButtonIndex: integer);
begin
  ButtonPanel[AButtonIndex].Visible := [B]AButton.Visible;[/B]
...
Нужна подсказка. делаю рэпак программы, хочу совместить x86, x64 в одном инсталляторе. Проблема в том что у обоих версий все dll и exe имеют разное название. т.е. в х86 имеют такой вид "name_x86.exe, name_x86.dll" а в х64 "name_x64.exe, name_64.dll", как сделать чтобы автоматически распаковывался нужный набор? Была идея с распаковкой в temp с последующим перемещением нужного набора, но почему-то не получилось.
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files]
Source: dll_x64.dll; DestDir: {app}; Check: ISWIN64;
Source: dll_x86.dll; DestDir: {app}; Check: not ISWIN64;[Setup]
AppId={{701B0003-9114-4402-B8B8-95EA3796FA7C}
AppName=GTA4
AppVersion=1.0.0
AppVerName=GTA4 1.0.0
AppPublisher=Gabriel
DefaultDirName={pf}\GTA4
DefaultGroupName=GTA4
AllowNoIcons=yes
OutputBaseFilename=GTA4
SetupIconFile=C:\Users\Gabriel\Desktop\_jpg.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "E:\Steam\SteamApps\common\Grand Theft Auto IV\GTAIV\GTAIV.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Steam\SteamApps\common\Grand Theft Auto IV\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}\GTA4"; Filename: "{app}\GTAIV.exe"
Name: "{group}\{cm:UninstallProgram,GTA4}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\GTA4"; Filename: "{app}\GTAIV.exe"; Tasks: desktopicon
[Run]
Filename: "{app}\GTAIV.exe"; Description: "{cm:LaunchProgram,GTA4}"; Flags: nowait postinstall skipifsilentСпасибо за совет, вообщем переделал я скрипт и ура все заработало...инстал создался и запустился и даже игра установилась, но не запустилась-отсутствует "bink32.dl". Я его скачал отдельно и скопировал в папку с установленной игрой и в папку windows/system32, но это не решило проблему:cry:Gabriel, ошибся разделом.
Ну уж так и быть[Setup]: DiskSpanning
Возможные значения:
yes или no
Значение по умолчанию:
no
Описание:
При значении yes будет производиться разбиение на диски. Определяет, создавать ли компилятору один файл SETUP.EXE, или делить его на файлы (SETUP-*.BIN), которые помещаются на дискету, CD-ROM, DVD-ROM или другой носитель. Каждый файл в своем имени будет содержать номер, по которому можно будет определить на какой диск его следует скопировать. Скопируйте SETUP.EXE и SETUP-1.BIN на первый диск, SETUP-2.BIN на второй и т. д.
В этом случае размер каждого файла и число файлов, создаваемых для каждого диска, диктуется директивой DiskSliceSize и SlicesPerDisk секции [Setup]. Другие директивы, отвечающие за разбиение на диски, которые вы захотите внедрить, должны включать директивы DiskClusterSize и ReserveBytes.
Обратите внимание, что нужно обязательно задать этим директивам значение yes, если размер сжатого файла инсталлятора превышает 2,100,000,000 байт, даже если вы не планируете разбивать инсталлятор на диски. (Инсталлятор будет работать правильно, даже если все SETUP-*.BIN файлы будут размещены на одном диске).
[Setup]: DiskSliceSize
Возможные значения:
262144 до 2100000000, или max
Значение по умолчанию:
max (2100000000)
Описание:
Определяет максимальное количество байтов на дисковую часть (SETUP-*.BIN файл). Обычно, оно должно быть установлено в общее количество байтов, доступных на дисковых носителях, разделенных на значение директивы SlicesPerDisk секции [Setup], значение которого по умолчанию 1.
Директива игнорируется, если разбиение на диски не включено (директива DiskSpanning секции [Setup]).
Чтобы оптимально заполнить DVD диск размером 4.7 Гбайт, используйте:
SlicesPerDisk=3
DiskSliceSize=1566000000
Чтобы оптимально заполнить DVD диск размером 8.5 Гбайт, используйте:
SlicesPerDisk=5
DiskSliceSize=1708200000
Чтобы оптимально заполнить CD (80-минутные) диск размером 700 Мбайт, используйте:
SlicesPerDisk=1
DiskSliceSize=736000000
Чтобы оптимально заполнить 1.44MБ гибкие диски, используйте:
SlicesPerDisk=1
DiskSliceSize=1457664
Скачай русскую справку к InnoSetup - там много интересного и полезного.
[Setup]
DiskSpanning=true
DiskSliceSize=1566000000
AppId={{701B0003-9114-4402-B8B8-95EA3796FA7C}
AppName=GTA4
AppVersion=1.0.0
AppVerName=GTA4 1.0.0
AppPublisher=Gabriel
DefaultDirName={pf}\GTA4
DefaultGroupName=GTA4
AllowNoIcons=yes
OutputBaseFilename=GTA4
SetupIconFile=C:\Users\Gabriel\Desktop\_jpg.ico
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "E:\Steam\SteamApps\common\Grand Theft Auto IV\GTAIV\GTAIV.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "E:\Steam\SteamApps\common\Grand Theft Auto IV\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "E:\Steam\SteamApps\common\Grand Theft Auto IV\Installers\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
[Icons]
Name: "{group}\GTA4"; Filename: "{app}\GTAIV.exe"
Name: "{group}\{cm:UninstallProgram,GTA4}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\GTA4"; Filename: "{app}\GTAIV.exe"; Tasks: desktopicon
[Run]
Filename: "{app}\GTAIV.exe"; Description: "{cm:LaunchProgram,GTA4}"; Flags: nowait postinstall skipifsilentEvilAlex, с помощью библиотек вставить gif изображение (gifctrl.dll к примеру (fayri.dll не советую)) или разбить анимацию на картинки и сделать слайдшоу с таким же интервалом как в анимации.
type
TALabel = array of TLabel;
var
SystemPage, SelectTasksPage: TWizardPage;
RequirementsLbl, ProcessorLbl, VideoCardLbl, SoundCardLbl, RAMLbl, SystemLbl,
ProcessorNameLbl, VideoCardNameLbl, SoundCardNameLbl, RAMTotalLbl, SystemNameLbl: TLabel;
Keys: TArrayOfString;
ASysReq: TALabel;
function DetectHardware: Integer; external 'hwc_DetectHardware@files:get_hw_caps.dll stdcall';
function GetProcessorName: PAnsiChar; external 'hwc_GetProcessorName@files:get_hw_caps.dll stdcall';
function GetProcessorFreq: Integer; external 'hwc_GetProcessorFreq@files:get_hw_caps.dll stdcall';
function GetVideoCardName: PAnsiChar; external 'hwc_GetVideoCardName@files:get_hw_caps.dll stdcall';
function GetVidMemLocal: Integer; external 'hwc_GetVidMemLocal@files:get_hw_caps.dll stdcall';
function GetPdmWidth: Integer; external 'hwc_GetPdmWidth@files:get_hw_caps.dll stdcall';
function GetPdmHeight: Integer; external 'hwc_GetPdmHeight@files:get_hw_caps.dll stdcall';
function GetSoundCards: Integer; external 'hwc_GetSoundCards@files:get_hw_caps.dll stdcall';
function GetSoundCardName: PAnsiChar; external 'hwc_GetSoundCardName@files:get_hw_caps.dll stdcall';
function GetSystemPhys: Integer; external 'hwc_GetSystemPhys@files:get_hw_caps.dll stdcall';
function GetWindowsName: PAnsiChar; external 'hwc_GetWindowsName@files:get_hw_caps.dll stdcall';
function DelSp(s: string): string;
begin
  while Pos('  ',s)>0 do StringChange(s,'  ',' ');
  Result:=Trim(s);
end;
function GetElementIndex(a:TALabel; lbl:TLabel):integer;
var
  i:integer;
  f:boolean;
begin
  Result:=-1;
  f:=False;
  for i:=0 to GetArrayLength(a)-1 do
    if a[i]=lbl then begin
      f:=True;
      Break;
    end;
  if f then Result:=i;
end;
procedure AddLabelToArray(var a:TALabel; lbl:TLabel);
begin
  if GetElementIndex(a,lbl)=-1 then begin
    SetArrayLength(a,GetArrayLength(a)+1);
    a[GetArrayLength(a)-1]:=lbl;
  end;
end;
procedure InitializeWizard();
var
  Pdm: string;
  vr,VidRam : Longint;
  Version: TWindowsVersion;
begin
  WizardForm.Color:=clBlack
  WizardForm.ClientWidth:=ScaleX(798);
  WizardForm.ClientHeight:=ScaleY(543);
  WizardForm.Center;
  WizardForm.OuterNotebook.Hide;
  WizardForm.InnerNotebook.Hide;
  WizardForm.Bevel.Hide;
  with WizardForm.CancelButton do
  begin
    Top := ScaleY(500);
  end;
  with WizardForm.NextButton do
  begin
    Top := ScaleY(500);
  end;
  with WizardForm.BackButton do
  begin
    Top := ScaleY(500);
  end;
////////////////////// SystemPage //////////////////////
  SystemPage:=CreateCustomPage(wpLicense, ExpandConstant('{cm:Requirements1}'), ExpandConstant('{cm:Requirements2}'));
  RequirementsLbl := TLabel.Create(WizardForm);
  with RequirementsLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(100), ScaleY(250), ScaleX(605), ScaleY(50));
    Transparent:=True;
    Font.Name:= 'Georgia';
    Font.Size:= 10;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold, fsItalic];
    Caption := ExpandConstant('{cm:Requirements3}');
    Parent:=WizardForm;
  end;
  //================= Начало - Процессор =================//
  ProcessorLbl := TLabel.Create(WizardForm);
  with ProcessorLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(107), ScaleY(296), ScaleX(150), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Processor}');
    Parent := WizardForm;
  end;
  ProcessorNameLbl := TLabel.Create(WizardForm);
  with ProcessorNameLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(278), ScaleY(296), ScaleX(400), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := DelSP(GetProcessorName) + ' @' + IntToStr(GetProcessorFreq) + ' MHz';
    Parent := WizardForm;
  end;
  RegGetSubkeyNames(HKLM, 'Hardware\Description\System\CentralProcessor', Keys)
  if (GetProcessorFreq*GetArrayLength(Keys)) < {#Processor} then
  begin
    RequirementsLbl.Caption := ExpandConstant('{cm:Requirements4}');
    AddLabelToArray(AsysReq,ProcessorNameLbl);
  end;
//================= Конец - Процессор =================//
//================= Начало - Видеоадаптер =================//
  VideoCardLbl := TLabel.Create(WizardForm);
  with VideoCardLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(107), ScaleY(327), ScaleX(150), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:VideoCard}');
    Parent := WizardForm;
  end;
  VideoCardNameLbl := TLabel.Create(WizardForm);
  with VideoCardNameLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(280), ScaleY(327), ScaleX(400), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := GetVideoCardName;
    Parent := WizardForm;
  end;
  Pdm:=' ['+IntToStr(GetPdmWidth)+'x'+IntToStr(GetPdmHeight)+']';
  VidRam:=GetVidMemLocal/1000000;
  if (VidRam<63) or (VidRam>1100) then vr:=VidRam
  else if VidRam<100 then vr:=64
  else if VidRam<200 then vr:=128
  else if VidRam<300 then vr:=256
  else if VidRam<400 then vr:=384
  else if VidRam<600 then vr:=512
  else if VidRam<800 then vr:=792
  else if VidRam>800 then vr:=1024;
  if VidRam=0 then VideoCardNameLbl.Caption:=ExpandConstant('{cm:DeviceDriver}')
    else VideoCardNameLbl.Caption:=DelSp(VideoCardNameLbl.Caption)+' ~'+IntToStr(vr)+' MB'+Pdm;
  if vr<{#VideoCard} then begin
    RequirementsLbl.Caption:=ExpandConstant('{cm:Requirements4}');
    AddLabelToArray(ASysReq,VideoCardNameLbl);
  end;
//================= Конец - Видеоадаптер =================//
//================= Начало - Звуковая карта =================//
  SoundCardLbl := TLabel.Create(WizardForm);
  with SoundCardLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(107), ScaleY(358), ScaleX(150), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:SoundCard}');
    Parent := WizardForm;
  end;
  SoundCardNameLbl := TLabel.Create(WizardForm);
  with SoundCardNameLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(278), ScaleY(358), ScaleX(400), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := GetSoundCardName;
    Parent := WizardForm;
  end;
  if GetSoundCards = 0 then begin
    RequirementsLbl.Caption:= ExpandConstant('{cm:Requirements4}');
    SoundCardNameLbl.Caption:= ExpandConstant('{cm:DeviceDriver}');
    AddLabelToArray(ASysReq,SoundCardNameLbl);
  end;
//================= Конец - Звуковая карта =================//
//================= Начало - ОЗУ =================//
  RAMLbl := TLabel.Create(WizardForm);
  with RAMLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(107), ScaleY(389), ScaleX(150), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:RAM}');
    Parent := WizardForm;
  end;
  RAMTotalLbl := TLabel.Create(WizardForm);
  with RAMTotalLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(279), ScaleY(389), ScaleX(400), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := IntToStr(GetSystemPhys + 1) + ' MB';
    Parent := WizardForm;
  end;
  if (GetSystemPhys+1)<{#RAM} then begin
    RequirementsLbl.Caption := ExpandConstant('{cm:Requirements4}');
    AddLabelToArray(ASysReq,RAMTotalLbl);
  end;
//================= Конец - ОЗУ =================//
//================= Начало - Операционная система =================//
  SystemLbl := TLabel.Create(WizardForm);
  with SystemLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(107), ScaleY(420), ScaleX(150), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:OperationSystem}');
    Parent := WizardForm;
  end;
  SystemNameLbl := TLabel.Create(WizardForm);
  with SystemNameLbl do begin
    AutoSize:=False;
    SetBounds(ScaleX(279), ScaleY(420), ScaleX(400), ScaleY(22));
    Transparent:=True;
    Font.Name:= 'Arial';
    Font.Size:= 9;
    Font.Color:=$FFFFFF;
    Font.Style:=[fsBold];
    Caption := GetWindowsName;
    Parent := WizardForm;
  end;
  GetWindowsVersionEx(Version);
  if not Version.NTPlatform or
    (Version.NTPlatform and (Version.Major<{#WinVerMajor})) or
    (Version.NTPlatform and (Version.Major={#WinVerMajor}) and (Version.Minor<{#WinVerMinor})) or
    (Version.NTPlatform and (Version.Major={#WinVerMajor}) and (Version.Minor={#WinVerMinor}) and (Version.ServicePackMajor<{#ServicePack})) then begin
    RequirementsLbl.Caption := ExpandConstant('{cm:Requirements4}');
    AddLabelToArray(ASysReq,SystemNameLbl);
  end;
//================= Конец - Операционная система =================//
////////////////////// SystemPage //////////////////////
end;
procedure HideComponents;
begin
  RequirementsLbl.Hide;
  ProcessorLbl.Hide;
  ProcessorNameLbl.Hide;
  VideoCardLbl.Hide;
  VideoCardNameLbl.Hide;
  SoundCardLbl.Hide;
  SoundCardNameLbl.Hide;
  RAMLbl.Hide;
  RAMTotalLbl.Hide;
  SystemLbl.Hide;
  SystemNameLbl.Hide;
end;
procedure ShowComponents(CurPageID: Integer);
begin
  case CurPageID of
  SystemPage.ID:
  begin
    RequirementsLbl.Show;
    ProcessorLbl.Show;
    ProcessorNameLbl.Show;
    VideoCardLbl.Show;
    VideoCardNameLbl.Show;
    SoundCardLbl.Show;
    SoundCardNameLbl.Show;
    RAMLbl.Show;
    RAMTotalLbl.Show;
    SystemLbl.Show;
    SystemNameLbl.Show;
    end;
  end;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
  HideComponents;
  ShowComponents(CurPageID);
end;[/SPOILER]