Цитата Devils Night:
нужно чтобы сам инсталятор проверял на наличие установленных компонентов »
|
Devils Night, и это правильно.
Цитата Devils Night:
Может будут, какие другие варианты? »
|
dotnetfx3_x86, vcredist_x86, xliveredist - сердцем этих установщиков является msi-документ, а значит используем возможности API системы, а именно функцию MsiQueryProductState.
Код:
[code]
const
INSTALLSTATE_DEFAULT = 5;
#ifdef UNICODE
#define A "W"
#else
#define A "A"
#endif
function MsiQueryProductState(szProduct: String): Integer;
external 'MsiQueryProductState{#A}@msi.dll stdcall';
function IsMsiProductInstall(ProductCode: String): Boolean;
begin
Result := MsiQueryProductState(ProductCode) = INSTALLSTATE_DEFAULT;
end;
//к примеру определяем установлен ли Microsoft Visual C++ 2010 x86 Redistributable, ProductCode которого {196BB40D-1578-3D01-B289-BEFC77A11A1E}
procedure InitializeWizard();
begin
if IsMsiProductInstall('{196BB40D-1578-3D01-B289-BEFC77A11A1E}') then
MsgBox('vcredist 2010 installed for current user', mbInformation, MB_OK)
else
MsgBox('vcredist 2010 not installed', mbInformation, MB_OK);
end;
ProductCode можно посмотреть в msi-документе с помощью Orca (таблица Property, свойство ProductCode)