Как получить версию MS Office с помощью JScript в TestComplete?

В TestComplete, как мы можем получить версию Microsoft Office (не Excel или Word) с помощью JScript, не заглядывая в реестр? Я пробовал это (используя Shell.Application для получения пути к файлам программы), но это не работает:

var ProgramFiles = aqEnvironment.GetEnvironmentVariable("ProgramFiles", true);
var MSOffFilePath = ProgramFiles +"\\Microsoft Office\\Office14\\";
var Officeversion = aqFileSystem.GetFileInfo(MSOffFilePath).VersionInfo.FileMajorVersion;
Log.Message(Officeversion);

person vinu    schedule 04.06.2015    source источник
comment
Нам нужно больше деталей. В какой среде вы используете Javascript? Что вы пробовали до сих пор?   -  person doldt    schedule 04.06.2015
comment
Использование его в TestComplete.   -  person vinu    schedule 04.06.2015
comment
var ProgramFiles = aqEnvironment.GetEnvironmentVariable(ProgramFiles, true); var MSOffFilePath = ProgramFiles +\\Microsoft Office\\Office14\\; var Officeversion = aqFileSystem.GetFileInfo(MSOffFilePath).VersionInfo.FileMajorVersion; Журнал.Сообщение(офисная версия);   -  person vinu    schedule 04.06.2015
comment
Я скопировал ваш код в ваш вопрос - не размещайте код в комментариях: он там нечитаем.   -  person Politank-Z    schedule 05.06.2015
comment
посмотрите, поможет ли это вам — github.com/npocmaka/batch .scripts/blob/мастер/другое/   -  person npocmaka    schedule 11.06.2015


Ответы (1)


Вы можете использовать WMI для этого. Запросите класс Win32_Product, чтобы установить Office продукты, названия продуктов (например, «Microsoft Office Standard 2010») и версии («14.0.7015.1000»).

var oWMI = GetObject("winmgmts:");

// Find all installed products whose name starts with "Microsoft Office"
// but ignore items like "Microsoft Office Proof (English)"
// or "Microsoft Office Office 64-bit Components 2010"
var colSoft = oWMI.ExecQuery(
  "SELECT * FROM Win32_Product"
  + " WHERE Name LIKE 'Microsoft Office%'"
  + " AND NOT Name LIKE '%(%'"
  + " AND NOT Name LIKE '%Proof%'"
  + " AND NOT Name LIKE '%Components%'"
);

if (colSoft.Count == 0) {
  Log.Message("Microsoft Office is not installed.");
}
else {
  var enumSoft = new Enumerator(colSoft);
  var item, strName;
  for (; !enumSoft.atEnd(); enumSoft.moveNext())
  {
    item = enumSoft.item();
    Log.Message(item.Name);    // Microsoft Office Standard 2010
    Log.Message(item.Version); // 14.0.7015.1000
  }
}
person Helen    schedule 18.06.2015