Нужно установить компоненты, их там достаточно много.
OLAP компоненту для просмотра и прочее прочее,
у меня для этих случаев есть вот такой код.
X++:
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'msiexec.exe /passive /i \\\\dc1\\msi\\OLAP\\OWC11.msi','\\\\dc1\\msi');
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'msiexec.exe /passive /i \\\\dc1\\msi\\msxml6.msi','\\\\dc1\\msi');
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'\\\\dc1\\msi\\WindowsInstaller-KB893803-v2-x86.exe /passive /norestart','\\\\dc1\\msi');
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'msiexec.exe /passive /i \\\\dc1\\msi\\sqlncli.msi','\\\\dc1\\msi');
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'msiexec.exe /passive /i \\\\dc1\\msi\\SQLServer2005_ASOLEDB9.msi','\\\\dc1\\msi');
WinAPI::CreateProcessWithLogon("логин","домен","пароль",'msiexec.exe /passive /i \\\\dc1\\msi\\SQLServer2005_ADOMD.msi','\\\\dc1\\msi');
вот код процедуры в классе WinAPI
X++:
#define.LOGON_WITH_PROFILE(0x1)
#define.CREATE_DEFAULT_ERROR_MODE(0x4000000)
public static int CreateProcessWithLogon(str _login,str _domain,str _password,str _wcommandLine,str _wcurrentDir)
{
DLL _dll = new DLL('advapi32.dll');
DLLFunction dllFunction = new DLLFunction(_dll,'CreateProcessWithLogonW');
Binary startupInfo = new Binary(68);
Binary processInfo = new Binary(4*4);
int result;
;
dllFunction.arg(ExtTypes::WString,
ExtTypes::WString,
ExtTypes::WString,
ExtTypes::DWord,
ExtTypes::Pointer,
ExtTypes::WString,
ExtTypes::DWord,
ExtTypes::DWord,
ExtTypes::WString,
ExtTypes::Pointer,
ExtTypes::Pointer);
dllFunction.returns(ExtTypes::DWord);
startupInfo.dWord(0,68);
result = dllFunction.call(_login,_domain,_password,#LOGON_WITH_PROFILE,0,_wcommandLine,#CREATE_DEFAULT_ERROR_MODE,0,_wcurrentDir,startupInfo,processInfo);
WinAPI::waitForSingleObject(processInfo.dWord(0),-1);
WinAPI::closeHandle(processInfo.dWord(0));
return result;
}
очень удобное дело, когда пользователь не имеет прав на установку