Что нужно учесть

При выборе данного способа установки учтите его преимущества и недостатки.

Преимущества:

  • Более подходящий способ для автоматических обновлений. Не возникнет конфликта, как в случае с Software Installation (в политиках установлена одна версия, но пользователь уже обновил ее на другую).
  • Можно использовать не только MSI-пакет, но и exe-установщик.
  • В случае установки на одного пользователя можно запустить установщик с «базовым» интерфейсом. Пользователь будет видеть процесс установки, но диалоговых окон с выбором не будет.
  • Параметры для MSI-пакета можно задать как с помощью mst-файла, так и напрямую в командной строке.
  • Можно настроить более удобное логирование процесса.

Недостатки:

  • В скрипте должна быть учтена дополнительная логика. Например, перед началом установки нужно проверять наличие ранее установленной версии, для этого в скрипте нужно самостоятельно вписывать новую версию.
  • Появляется необходимость следить за дополнительными параметрами. Например, при смене контекста установки важно не забыть в скрипте поменять параметр ALLUSERS.
  • Администратор не может удалить приложение через групповые политики (разве что еще одним скриптом).

Пример PowerShell-скрипта

Пример PowerShell-скрипта, который выполняет установку/обновление с учетом предыдущих версий:

######### Входные параметры
# Новая версия, нужно менять при каждом обновлении 
# (еще вариант - парсить из имени файла)
$NewAppVersion = "24.4.0.42791"                                       

# Путь до MSI-пакета, в данном случае использует версию
$PathToMsi = "\\WINDOWS-BASIC-1\MyShared\vkteams.$NewAppVersion.msi"  

# Путь до файла с настройками прокси (если нужно)
$PathToProxyIni = "\\WINDOWS-BASIC-1\MyShared\proxy template.txt"

$CurrentDate = Get-Date -Format "yyyymmdd_hhmmss"

# Путь до файла логов 
# (при установке на всех пользователей нужно поменять на C:\Windows\Temp\)
$PathToLogFile = "$env:LocalAppData\Temp\install_$CurrentDate.log"    

######### Попытка определить версию установленного ранее приложения
$CurrentAppVersion = ""
$ProductPath = "VK Teams"
$Installer = New-Object -ComObject WindowsInstaller.Installer; 
$InstallerProducts = $Installer.ProductsEx("", "", 7); 
$InstalledProducts = ForEach($Product in $InstallerProducts) 
{ 
    [PSCustomObject]@{VersionString = $Product.InstallProperty("VersionString"); 
    ProductPath = $Product.InstallProperty("ProductName")} 
}; 
foreach ($product in $InstalledProducts) 
{ 
    if ($product.ProductPath -eq  $ProductPath) 
    { $CurrentAppVersion = $product.VersionString } 
}

######### Запуск установки, если приложение не найдено, либо его версия меньше новой
if (-not $CurrentAppVersion -or $CurrentAppVersion -lt $NewAppVersion) 
  {   
    # Параметры можно изменить, удалить, либо добавить новые по аналогии 
    # например INSTALL_ROOT 
    Start-Process -FilePath "msiexec.exe" -ArgumentList `
    "/i `"$PathToMsi`"", `
    # Контекст установки. По умолчанию - на одного пользователя. 
    # Раскомментировать для установки на всех пользователей 
    #"ALLUSERS=1", ` 
    # Настройка автоматических обновлений 
    "AUTOUPDATES=1", ` 
    # Настройка прокси. Раскомментировать, если нужно 
    #"PROXY_INI=`"$PathToProxyIni`"", ` 
    # Тихая установка. В случае установки на одного пользователя можно поменять на /qb 
    # (базовый интерфейс с прогрессом установки) 
    "/q", `
    # Логирование 
    "/L*V `"$PathToLogFile`""          
  }

Включение политики запуска скрипта

При установке на всех пользователей

  1. Создайте политику и привяжите ее к нужным компьютерам.

  2. Откройте окно редактирования политики.

  3. Выберите корневой раздел: Computer Configuration.

  4. Перейдите в подраздел Policies → Windows Settings → Scripts.

  5. Двойным кликом по Startup откройте окно добавления скриптов.

  6. Перейдите на вкладку PowerShell Scripts.

  7. Добавьте скрипт, указав сетевой путь до него.

  8. Подтвердите выполненные действия нажатием на кнопку OK.

    img

При установке на одного пользователя

Предварительно разрешите пользователям выполнять установку от их имени:

  1. Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows Installer.

    img

  2. Откройте политику Turn Off Windows Installer, включите её и задайте значение Never.

    img

  3. Откройте политику Prohibit User Installs, включите её и задайте значение Allow User Installs.

    img

  4. Созданную групповую политику примените не на пользователей, а на компьютеры.

Включите политику запуска скрипта:

  1. Создайте политику и привяжите ее к нужным пользователям.

  2. Откройте окно редактирования политики.

  3. Выберите корневой раздел: User Configuration.

  4. Перейдите в подраздел Policies → Windows Settings → Scripts.

    img

  5. Двойным кликом по Logon откройте окно добавления скриптов.

  6. Перейдите на вкладку PowerShell Scripts.

  7. Добавьте скрипт, указав сетевой путь до него.

    img

  8. Подтвердите выполненные действия нажатием на кнопку OK.

Помощь Mail
Обновлено 3 июня 2025 г.