Ветеран
Сообщения: 1133
Благодарности: 581
|
Профиль
|
Отправить PM
| Цитировать
Цитата abc:
Подскажите, как сделать в программе установки проверку на наличие установленного распространяемого пакета ms visual c++ 2008 и в случае отсутствия автоматически (с учётом разрядности системы) загрузить»
|
У меня есть пример проверки и загрузки в случае отсутствия .NET Framework'a, можете сделать по аналогии
Пример
Код: 
; определение версии установленного .NetFramework
[Setup]
AppName=NetFramework
AppVerName=NetFramework
DefaultDirName={pf}\NetFramework
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
VersionInfoCopyright=Serega
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
[Code]
const
MinNetFrameWork = 'v3.5'; // минимальная версия NetFrameWork
var
url: string;
function GetNetFrameWork(ver: string): Integer;
begin
// страница загрузок http://www.microsoft.com/downloads/results.aspx?pocId=&freetext=Framework&DisplayLang=ru
Result:= 5;
url:= 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
case ver of
'v1.0':
begin
// по этой ссылке v1.1, т.к. ссылку на v1.0, я не нашёл... раритет... ;)
url:= 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
Result:= 0;
end;
'v1.1':
begin
url:= 'http://download.microsoft.com/download/0/8/6/086e7824-ddad-45c0-b765-721e5e28e4c5/dotnetfx.exe';
Result:= 1;
end;
'v2.0':
begin
url:= 'http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe';
Result:= 2;
end;
'v3.0':
begin
url:= 'http://download.microsoft.com/download/4/d/a/4da3a5fa-ee6a-42b8-8bfa-ea5c4a458a7d/dotnetfx3setup.exe';
Result:= 3;
end;
'v3.5':
begin
url:= 'http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe';
Result:= 4;
end;
end;
end;
function SearchNetFrameWork: Boolean;
var
Error: Integer;
VerNetFrameWork: array of string;
VerNetFrameWorkInstalled: TArrayOfString;
i, n: Integer;
begin
VerNetFrameWork:= ['v1.0', 'v1.1', 'v2.0', 'v3.0', 'v3.5'];
SetArrayLength(VerNetFrameWork, GetArrayLength(VerNetFrameWork));
if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy', VerNetFrameWorkInstalled) then
begin
SetArrayLength(VerNetFrameWorkInstalled, GetArrayLength(VerNetFrameWorkInstalled));
for i:= 0 to GetArrayLength(VerNetFrameWorkInstalled)-1 do
begin
for n:= 0 to GetArrayLength(VerNetFrameWork)-1 do
if VerNetFrameWorkInstalled[i] = VerNetFrameWork[n] then
if n >= GetNetFrameWork(MinNetFrameWork) then
begin
Result:= True;
Break;
end
else
begin
if MsgBox('Для этой программы требуется установленный .NET Framework не ниже ' + MinNetFrameWork + '. ' +
'Пожалуйста загрузите и установите .NET Framework и запустите установку снова. ' +
'Вы хотите загрузить .NET Framework сейчас?', mbConfirmation, MB_YESNO) = idYes then
ShellExec('open', url,'','',SW_SHOWNORMAL,ewNoWait,Error);
Result:= False;
end;
end;
end;
end;
function InitializeSetup: Boolean;
begin
if SearchNetFrameWork then Result:= True;
end;
|
-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.
Отправлено: 19:51, 11-11-2009
| #391
|