Нужна помощь,
Прилетела задача: нужно установить приложение, для установки этого приложению нужен .net framework 4+.
Я написал пакет в SCCM с пошаговой установкой:
Ставим .net 4.5.2
Ставим MUI для .net 4.5.2
Ставим приложение
и столкнулся с проблемой, если запустить этот пакет на ПК где уже установлен .net, то в процессе установки требуется перезагрузка.
Решил попробовать написать скрипт который будет осуществлять проверку на наличие .net 4+,
если на ПК установлен .net 4+ то ставить ПО, если его нет, то ставить .net, mui и ПО.
$ErrorActionPreference = "silentlycontinue"
$ScriptDir = [IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Path)
$OSVer = gwmi win32_operatingsystem | % {$_.version}
$OSArch = gwmi win32_operatingsystem | % {$_.OSArchitecture}
if ($OSver -like "6.1.*")
{
$Framework = gwmi win32_product | ? {$_.name -like "microsoft net framework 4*"} | % {$_.name} | select -first 1
if ($Framework -notlike "microsoft net framework 4*")
{start -wait "$ScriptDir\NDP452-KB2901907-x86-x64-AllOS-ENU.exe" -argumentlist "/q /norestart"
start -wait "$ScriptDir\NDP452-KB2901907-x86-x64-AllOS-RUS.exe" -argumentlist "/q /norestart"
}
$Framework = gwmi win32_product | ? {$_.name -like "*net framework*"} | % {$_.name} | select -first 1
if ($Framework -like "microsoft net framework 4*")
{
Start -wait "$ScriptDir\AppMngr.msi" -argumentlist "/quiet /norestart"
if ($OSArch -like "32-bit")
{
Copy-item "$ScriptDir\SynAppManager.exe.config" -Destination "C:\Program Files\Syntellect\Application Manager1.23.0" -force
}
if($OSArch -like "64-bit")
{
Copy-item "$ScriptDir\SynAppManager.exe.config" -Destination "C:\Program Files (x86)\Syntellect\Application Manager1.23.0" -force
}
}
}
..
и получил жопу, в 8 строчке, а именно если .net не установлен на ПК то переменная $Framework пустая и не отдает значения true/false, и эта часть кода скипается. Если в этой строке заменить -notlike на -ne тогда перестает работать * и нужно указывать название .net целиком, это мне тоже не подходит.
Посоветуйте что-нибудь пож
Updated: 23 June 2016, 21:28:53
Кажется придумал:
$Framework = gwmi win32_product | ? {$_.name -like "microsoft net framework 4*"} | % {$_.name} | select -first 1
if ($Framework -like "microsoft net framework 4*")
{
$Framework = "1"
}
if ($Framework -ne "1")
{...}