Свободное общение

А почему тогда другие файлы дают скачивать? Так бы и писали, что ограничение действует на некоторые файлы.
Начинающим любителям, вроде меня, которые не занимаются этим професионально, никогда не получить статус "Пользователи", из-за нехватки знаний и времени.
 
А почему тогда другие файлы дают скачивать? Так бы и писали, что ограничение действует на некоторые файлы.
Начинающим любителям, вроде меня, которые не занимаются этим професионально, никогда не получить статус "Пользователи", из-за нехватки знаний и времени.
Получить... Я получил помогая другим пользователям и решая некоторые проблемы с участниками форума. Либо возьми да купи за символическую сумму в чём проблема? Нехватка времени твоя личная проблема, других не интересующая. Тут участники форума более чем адекватные, РЕАЛЬНО помогающие тем кто правильно задаёт свой вопрос. На личном опыте это говорю.
 
@dixen18, что-то не верится чтобы не смог перенести код в процедуру и добавить чекбокс для исполнения ее.
 
@Andreo Fadio, К сожалению в кодинге для IS несилен..Увы.
А вы для чего это написали? Помощи я от вас не увидел в данном топике) Просто написать ради того чтоб написать? Я так тоже могу)
 
Привет. Кто знает как проверить наличие в системе .net framework 5.0?
Если для Inno, то есть встроенная функция IsDotNetInstalled.
Инка, в этой функции, ищет по ключу
Код:
SOFTWARE\Microsoft\NET Framework Setup\NDP\

ЗЫ. У меня на 7-ке вообще нет такой ветки как
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\dotnet
 
@Andreo Fadio,
открываем репозиторий ищем функцию...
https://github.com/jrsoftware/issrc...f2bce1bbd8a11195040525460/Projects/DotNet.pas
смотрим код, видим что просматривается реестр
HKEY_LOCAL_MACHINE SOFTWARE\Microsoft\NET Framework Setup\NDP\
вот по функции ниже ищется нужная версия. если есть путь в реестре SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.5 то стоит net45 и так все ветки смотрит с малой версии по старшенству. думаю ничего сложного, но мне лень 🙃.
code_language.pascal:
  function GetVersionString(const Version: TDotNetVersion): String;
  begin
    case Version of
      net11: Result := 'v1.1';
      net20: Result := 'v2.0';
      net30: Result := 'v3.0';
      net35: Result := 'v3.5';
      net4Client: Result := 'v4\Client';
      net4Full: Result := 'v4\Full';
      net45: Result := 'v4.5';
      net451: Result := 'v4.5.1';
      net452: Result := 'v4.5.2';
      net46: Result := 'v4.6';
      net461: Result := 'v4.6.1';
      net462: Result := 'v4.6.2';
      net47: Result := 'v4.7';
      net471: Result := 'v4.7.1';
      net472: Result := 'v4.7.2';
      net48: Result := 'v4.8';
      else
        InternalError('IsDotNetDetected: Invalid Version');
    end;
  end;
 
Хамик, раз пошла такая "пьянка" и тема "Свободная", нашел на просторах такой код:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
CreateAppDir=no

[*Code]
type
//
// Enumeration used to specify a .NET framework version
//
TDotNetFramework = (
  DotNet_v11_4322,  //.NET Framework 1.1
  DotNet_v20_50727, //.NET Framework 2.0
  DotNet_v30,       //.NET Framework 3.0
  DotNet_v35,       //.NET Framework 3.5
  DotNet_v4_Client, //.NET Framework 4.0 Client Profile
  DotNet_v4_Full,   //.NET Framework 4.0 Full Installation
  DotNet_v45);      //.NET Framework 4.5
//Parameters:
//  Version     - Required .NET Framework version
//  ServicePack - Required service pack level (0: None, 1: SP1, 2: SP2 etc.)
//
function IsDotNetInstalled(Version: TDotNetFramework; ServicePack: Cardinal): Boolean;
var
  KeyName: String;
  Success: Boolean;
  InstallFlag,
  ReleaseVer,
  ServiceCount: Cardinal;
begin
//Registry path for the requested .NET Version
  KeyName := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\';
  case Version of
    DotNet_v11_4322: KeyName:=KeyName + 'v1.1.4322';
    DotNet_v20_50727: KeyName:=KeyName + 'v2.0.50727';
    DotNet_v30: KeyName:=KeyName + 'v3.0';
    DotNet_v35: KeyName:=KeyName + 'v3.5';
    DotNet_v4_Client: KeyName:=KeyName + 'v4\Client';
    DotNet_v4_Full: KeyName:=KeyName + 'v4\Full';
    DotNet_v45: KeyName:=KeyName + 'v4\Full';
  end;
  // .NET 3.0 uses "InstallSuccess" key in subkey Setup
  if (Version = DotNet_v30) then
    Success:=RegQueryDWordValue(HKLM, KeyName + '\Setup', 'InstallSuccess', InstallFlag) else
    Success:=RegQueryDWordValue(HKLM, KeyName, 'Install', InstallFlag);
  // .NET 4.0/4.5 uses "Servicing" key instead of "SP"
  if (Version = DotNet_v4_Client) or (Version = DotNet_v4_Full) or (Version = DotNet_v45) then
  Success:=Success and RegQueryDWordValue(HKLM, KeyName, 'Servicing', ServiceCount) else
  Success:=Success and RegQueryDWordValue(HKLM, KeyName, 'SP', ServiceCount);
  // .NET 4.5 is distinguished from .NET 4.0 by the Release key
  if (Version = DotNet_v45) then begin
    Success:=Success and RegQueryDWordValue(HKLM, KeyName, 'Release', ReleaseVer);
    Success:=Success and (ReleaseVer >= 378389);
  end;
  Result:=Success and (InstallFlag = 1) and (ServiceCount >= ServicePack);
end;

procedure InitializeWizard;
begin
  WizardForm.OuterNotebook.Hide;
  with WizardForm.WelcomeLabel2 do begin
    Parent:=WizardForm;
    //
    Caption:='NET Framework 2.0 = = ';
      if IsDotNetInstalled(DotNet_v20_50727, 0) then Caption:=Caption + 'True' else Caption:=Caption + 'False';
    //
    Caption:=Caption + #13 +'NET Framework 3.0 = ';
      if IsDotNetInstalled(DotNet_v30, 0) then Caption:=Caption + 'True' else Caption:=Caption + 'False';
    //
    Caption:=Caption + #13 +'NET Framework 4.0 Client Profile = ';
      if IsDotNetInstalled(DotNet_v4_Client, 0) then Caption:=Caption + 'True' else Caption:=Caption + 'False';
    //
    Caption:=Caption + #13 +'NET Framework 4.0 Full = ';
      if IsDotNetInstalled(DotNet_v4_Full, 0) then Caption:=Caption + 'True' else Caption:=Caption + 'False';
  end;
end;
 
Написал по простому такой код:
code_language.pascal:
[Setup]
AppName=test
AppVerName=test
DefaultDirName={tmp}
Uninstallable=no
CreateUninstallRegKey=no
OutputDir=.

[Code]
function IsDotNetRegKeyExists(KeyName, net: string): String;
begin
if RegKeyExists(HKEY_LOCAL_MACHINE, KeyName + net) then
  result:= net;
end;

function IsDotNetInstalled(): String;
var
  KeyName, NetVer: String;
begin
  NetVer:= '';
//Registry path for the requested .NET Version
  KeyName := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\';
  NetVer:= IsDotNetRegKeyExists(KeyName, 'v1.0');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v2.0');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v3.0');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v3.5');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.0');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.5');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.5.1');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.5.2');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.6');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.6.1');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.6.2');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.7');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.7.1');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.7.2');
  NetVer:= IsDotNetRegKeyExists(KeyName,'v4.8');
  if NetVer = '' then
    NetVer:= 'IsDotNetDetected: Invalid Version';
  Result:= NetVer;
end;

procedure InitializeWizard;
begin
  MsgBox(IsDotNetInstalled(), mbInformation, MB_OK);
end;
И так сойдет 😆 (наверное)
 
Ну и я вставлю свои 5 копеек)
Код:
[Setup]
AppName =Test
AppVerName =Test
DefaultDirName =Test
OutputBaseFilename =Setup
ArchitecturesInstallIn64BitMode=x64

[Code]
type
  TDotNetVersion = (net20, net30, net35, net45, net451, net452, net46, net461, net462, net47, net471, net472, net48);

function GetVersionString(const Version: TDotNetVersion): String;
begin
  case Version of
    net20: Result := 'v2.0.50727';
    net30: Result := 'v3.0';
    net35: Result := 'v3.5';
    net45: Result := 'v4.5';
    net451: Result := 'v4.5.1';
    net452: Result := 'v4.5.2';
    net46: Result := 'v4.6';
    net461: Result := 'v4.6.1';
    net462: Result := 'v4.6.2';
    net47: Result := 'v4.7';
    net471: Result := 'v4.7.1';
    net472: Result := 'v4.7.2';
    net48: Result := 'v4.8';
    else
      Result := 'IsDotNetDetected: Invalid Version';
  end;
end;

function GetReleaseCode(const Version: TDotNetVersion): Cardinal;
begin
  case Version of
    net45: Result := 378389;
    net451: Result := 378675;
    net452: Result := 379893;
    net46: Result := 393295;
    net461: Result := 394254;
    net462: Result := 394254;
    net47: Result := 460798;
    net471: Result := 461308;
    net472: Result := 461808;
    net48: Result := 528040;
    else
      Result := -1;
  end;
end;

function IsDotNetInstalled(const MinVersion: TDotNetVersion): Boolean;
var
  ResValueFor45Plus: Cardinal;
begin
  // Если нужно проверить версию НИЖЕ 4 - смотрим по наличию пути, если иначе - то по релиз-коду
  if pos('v4', GetVersionString(MinVersion)) <> 1 then
    Result := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + GetVersionString(MinVersion))
  else
    begin
      RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full', 'Release', ResValueFor45Plus);
      Result := ResValueFor45Plus >= GetReleaseCode(MinVersion);
    end
end;

function InitializeSetup(): Boolean;
begin
  Result := IsDotNetInstalled(net20);
  if not Result then
    SuppressibleMsgBox(FmtMessage(SetupMessage(msgWinVersionTooLowError), ['.NET Framework', '4.6.2']), mbCriticalError, MB_OK, IDOK)
  else
    SuppressibleMsgBox('Успех!', mbInformation, MB_OK, IDOK);
end;
Кому не лень и есть какая - нибудь виртуалка с WinXP или Win7 - просьба тестануть на работоспособность - немного смущает net20
 
@Sergei1981,есть
и
ogg можно обработать перед запаковкой любым софтом.
 
Ребят, может кто сталкивался с проблемой: инсталлятор выдаёт Unarc.dll код ошибки 12. Файлы, на которых ошибка сжаты цепочкой xtool+srep+lolz. На моём пк всё нормально, а на ноутбуке жены такая ошибка всегда падает. У неё всего 2 гига оперативы.


Код:
[External compressor:xprecomp]
header    = 0
default = :c32mb,t1:zlib,lz4,zstd,lzo
packcmd   = xtool.exe e:precomp{:option} - - <stdin> <stdout>
unpackcmd = xtool.exe d:precomp:t75p - - <stdin> <stdout>

[External compressor:srep]
header = 0
packcmd   = srep {options} -a1 -m5f -l512 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
unpackcmd = srep -d -s <stdin> <stdout>

[External compressor:lolz]
header = 0
packcmd = lolz_x64.exe -mtt1 -mt8 -mtb128 -d128m -tt1 -fba0 -mc128 -dtd1 -dtw1 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
unpackcmd = cls-lolzx_x64.exe $$arcpackedfile$$.tmp $$arcdatafile$$.tmp
 
Ребят, может кто сталкивался с проблемой: инсталлятор выдаёт Unarc.dll код ошибки 12. Файлы, на которых ошибка сжаты цепочкой xtool+srep+lolz. На моём пк всё нормально, а на ноутбуке жены такая ошибка всегда падает. У неё всего 2 гига оперативы.


Код:
[External compressor:xprecomp]
header    = 0
default = :c32mb,t1:zlib,lz4,zstd,lzo
packcmd   = xtool.exe e:precomp{:option} - - <stdin> <stdout>
unpackcmd = xtool.exe d:precomp:t75p - - <stdin> <stdout>

[External compressor:srep]
header = 0
packcmd   = srep {options} -a1 -m5f -l512 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
unpackcmd = srep -d -s <stdin> <stdout>

[External compressor:lolz]
header = 0
packcmd = lolz_x64.exe -mtt1 -mt8 -mtb128 -d128m -tt1 -fba0 -mc128 -dtd1 -dtw1 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
unpackcmd = cls-lolzx_x64.exe $$arcpackedfile$$.tmp $$arcdatafile$$.tmp
Уменьшите память для распаковки
if ISDoneInit(ExpandConstant('{src}\data.inf'), $F222, Comps1, Comps2, Comps3, MainForm.Handle, 8, @ProgressCallback)
 
Назад
Сверху