R.i.m.s.k.y., это прекомпрессор для улучшения ПОСЛЕДУЮЩЕГО сжатия, он ищет ZLib-потоки в файлах и(или) архивах, и РАЗЖИМАЕТ их, в результате чего, последующее сжатие на порядок выше

Извиняюсь за оффтоп, но лучший, на мой взгляд вариант - паковать в 7-зип БЕЗ сжатия, прогонять прекомпом, после чего паковать снова ужем чем нравится с максимально возможным сжатием. Таким образом я в игре Стар варс форс анлишед 20 гиг игровых архивов сжал до 3 гиг
R.i.m.s.k.y., во, поможеш? Нужно сюда:
читать дальше »
function HLP: Boolean;
begin
ProgressInfoLabel.Visible:=False;
FilenameLabel.Hide;
Result:= BtnGetChecked(HLPCheck);
end;....
........
procedure HLPClick(hBtn:HWND);
begin
if BtnGetChecked(hBtn) then HLPLabel.Font.Color:=$00FFFF else HLPLabel.Font.Color:=$FFFFFF;
end;
procedure HLPLabelClick(Sender:TObject);
begin
BtnSetChecked(HLPCheck, not BtnGetChecked(HLPCheck));
HLPClick(HLPCheck);
end;
procedure HLPProgress;
begin
StatusLabel.Caption:=ExpandConstant('{cm:HLPInstall}')
end; .......
.......
HLPCheck:=BtnCreate(WizardForm.Handle,ScaleX(75),ScaleY(363),ScaleX(28),ScaleY(28),ExpandConstant('{ tmp}\CheckBox.png'),8,True);
BtnSetEvent(HLPCheck,BtnClickEventID,WrapBtnCallback(@HLPClick,1));
BtnSetCursor(HLPCheck,GetSysCursorHandle(32649));
HLPLabel := TLabel.Create(WizardForm);
with HLPLabel do begin
AutoSize:=False;
SetBounds(ScaleX(115), ScaleY(370), ScaleX(545), ScaleY(37));
OnClick:= @HLPLabelClick;
Cursor:= CrHand;
Transparent:=True;
Font.Name:= 'Georgia'
Font.Size:= 10;
Font.Color:=$00FFFF;
Font.Style:=[fsBold,fsItalic];
Caption := ExpandConstant('{cm:HLP}');
Parent := WizardForm;
end;
приделать проверку на isHLPinstalled - если да, то создается, если нет, то не создается.
нуи на вин семь
Чтобы вместо
Check: (HLP and isWin7 and (not IsWin64) and (not isHLPinstalled ))
Написать Check: HLP and not IsWin64 (или HLP and IsWin64)
И, да, вот это:
читать дальше »
Function isHLPinstalled : boolean;
var
VersionMS0, VersionLS0 : Cardinal; b1, b2 ,b3, b4 : boolean;
begin
b1 := False; b2 := False; b3 := False; b4 := False;
GetVersionNumbers(ExpandConstant('{win}\winhlp32.exe'), VersionMS0, VersionLS0);
if (VersionLS0 >= 498089986) then b1 := True;
if (FileExists(ExpandConstant('{sys}\ftlx041e.dll'))) then b2 := True;
if (FileExists(ExpandConstant('{sys}\ftlx0411.dll'))) then b3 := True;
if (FileExists(ExpandConstant('{sys}\fftsrch.dll'))) then b4 := True;
if (b1 or b2 or b3 or b4) then Result := True else Result := False
end;
в скрипте уже есть
