Руководство по Windows-установщикам
Общая информация
В документе описаны особенности работы с установщиками мессенджера VK Teams для операционной системы Windows. Документ предназначен для использования администраторами организации.
Установка
Для ОС Windows доступны два установщика с практически одинаковыми возможностями:
- MSI-пакет vkteams.msi
- EXE-установщик vkteamssetup.exe
MSI-пакет vkteams.msi
Нативный формат установочных пакетов для ОС Windows. Установка выполняется утилитой msiexec.exe, через командную строку, часто автоматизируется, но можно запустить установщик и через графический интерфейс. При установке через командную строку доступен ряд параметров, которые влияют как на процесс установки, так и на определенные настройки самого приложения.
Пример команды для установки через командную строку без дополнительных параметров:
EXE-установщик vkteamssetup.exe
Более привычный для рядовых пользователей тип установщика. Установка выполняется через графический интерфейс, с минимальным взаимодействием с пользователем. Но также доступна установка через командную строку. Доступны несколько параметров, однако их меньше чем при установке с помощью MSI-пакета.
Информация
В процессе установки EXE-установщик в конечном счете запускает хранящийся в нем MSI-пакет. Это значит, что установка через EXE-установщик концептуально ничем не отличается от установки через MSI-пакет.
Какой тип установщика выбрать
Выбор типа установщика зависит от окружения и условий, в которых производится установка. Например, если в процессах развертывания приложений используется orca.exe, то нужно использовать MSI-пакет. Если же установка выполняется не администратором, а самим пользователем, то EXE-установщик будет предпочтительнее.
Контекст установки
Важным параметром в механизме установки на ОС Windows является контекст установки. Возможна установка:
- на одного пользователя (per-user);
- на всех пользователей (per-machine, на весь компьютер).
Установка на одного пользователя
При такой установке приложение будет доступно только текущему пользователю.
По умолчанию устанавливается в специальную папку с программами пользователя C:\Users\%username%\AppData\Local\Programs
. В процессе установки производится запись определенных данных в реестр Windows (в куст реестра данного пользователя).
Поскольку у пользователя имеются права на запись как на эту папку, так и на свой реестр, то в дальнейшем он может самостоятельно обновиться на новую версию приложения. Если при установке был включен параметр автоматического обновления, то оно также будет выполняться без ошибок, так как приложение запускается с правами пользователя и тоже имеет доступ к папке с программой и к реестру пользователя.
Установка на всех пользователей
При такой установке приложение будет доступно всем пользователям компьютера.
По умолчанию устанавливается в общую папку с программами C:\Program Files (x86)
. Запись данных в реестр производится в системный куст HKEY_LOCAL_MACHINE
. Это нужно для того, чтобы у каждого пользователя был доступ как к программе, так и к данным программы в реестре. При этом нужен доступ на чтение, который по умолчанию есть у всех пользователей. Доступа на модификацию у рядовых пользователей, как правило, нет. По этой причине установка выполняется администратором компьютера, у которого есть соответствующие права на модификацию.
Установка на всех пользователей распространяется не только на существующих пользователей, но и на тех, которые будут созданы позже. У нового пользователя на рабочем столе автоматически появится ярлык приложения.
Подробнее о контексте установки и возможных проблемах описано в разделе Особенности установки/Контекст установки.
Логирование процесса установки
При использовании EXE-установщика логирование включается автоматически. Файлы логов хранятся в папке %TEMP%/vkteams.install
того пользователя, от чьего имени запущена установка.
Для MSI-пакета логирование необходимо включать отдельным параметром: msiexec /i vkteams.msi /L\*V install.log
. Подробнее см. в разделе Параметры командной строки для MSI-пакета.
Рекомендуется всегда включать логирование при установке или обновлении с помощью MSI-пакета, так как в случае ошибок в логах можно найти нужную информацию.
Обновление
Обновление выполняется теми же установщиками. Установщик самостоятельно определяет наличие ранее установленной версии и заменяет ее на новую (если не изменился контекст установки). Для обновления можно использовать как MSI-пакет, так и EXE-файл, вне зависимости от того, каким способом была выполнена предыдущая установка.
Во время обновления запущенное приложение автоматически закрывается. После обновления, в зависимости от параметра AUTOLAUNCH
, оно будет автоматически запущено.
Внимание
Обновляться на более старую версию (даунгрейд) запрещено. Например, если попробовать обновиться с версии 24.3 на версию 24.2, обновление завершится с ошибкой.
Удаление
Приложение можно удалить:
- через графический интерфейс: Приложения и возможности → VK Teams → Удалить.
- через командную строку:
msiexec /x "{product_guid}".
Как получить идентификатор (GUID), см. ниже. Пример полной команды, с идентификатором:
Примечание
Через командную строку можно удалять, даже если установка выполнялась через EXE-файл.
GUID установленного приложения
Чтобы узнать GUID приложения, в командной строке (terminal либо PS) выполните команду:
$Installer = New-Object -ComObject WindowsInstaller.Installer;
$InstallerProducts = $Installer.ProductsEx("", "", 7);
$InstalledProducts = ForEach($Product in $InstallerProducts)
{
[PSCustomObject]@{ProductCode = $Product.ProductCode();
LocalPackage = $Product.InstallProperty("LocalPackage");
VersionString = $Product.InstallProperty("VersionString");
ProductPath = $Product.InstallProperty("ProductName")}
};
foreach ($product in $InstalledProducts)
{
if ($product.ProductPath -eq "VK Teams") { $product }
}
Отобразится список найденных приложений, идентификаторы будут указаны в первом столбце.
Внимание
- В списке будут представлены приложения VK Teams , которые установлены как на всех пользователей, так и на одного пользователя. Получить из учетной записи текущего пользователя список приложений, установленных на другого пользователя, нельзя.
- GUID MSI-пакета (Меню → Свойства → Подробно → Источник → Редакция) и GUID приложения, которое будет установлено этим пакетом — отличаются. Для управления приложением нужно использовать только GUID приложения.
Параметры командной строки MSI-пакета
При установке через командную строку с использованием утилиты msiexec можно задать несколько параметров, которые повлияют на процесс установки, а также на настройки приложения. Все они приведены ниже.
ALLUSERS. Контекст установки
Задает установку либо на одного пользователя, либо на всех пользователей. Для установки на одного пользователя кроме этого параметра необходимо добавить также параметр MSIINSTALLPERUSER
.
Команда для установки на всех пользователей:
Команда для установки на одного пользователя:
Если параметр не указан:
Выполняется установка на одного пользователя. То же самое происходит и при запуске MSI-пакета через графический интерфейс.
Внимание
В дальнейшем при обновлении необходимо указывать тот же контекст установки, что и для ранее установленного приложения, иначе возможны проблемы. «Контекст установки» и «установка от имени администратора» — это разные сущности. Подробнее см. в разделе Особенности установки.
INSTALL_ROOT. Директория установки приложения
Задает директорию, в которой будет расположено установленное приложение.
Команда для установки с заданной директорией:
Если в директории есть пробелы, то путь надо обернуть в двойные кавычки, при этом каждую кавычку экранировать грависом (символ обратного ударения `, находится на той же клавише, что и тильда ~):Параметр полезен для тихой установки (с параметром /q
), так как при установке через графический интерфейс выбор директории настраивается в специальном диалоговом окне. Во время обновления этот параметр ни на что не влияет, обновление выполнится в существующую папку с приложением. Однако если директория указана в графическом интерфейсе, то приложение установится в новую папку, а старая папка удалится.
При установке на одного пользователя директорию нужно выбрать так, чтобы к ней не было доступа у других пользователей. Если установки под двумя разными пользователями выполнятся в одну и ту же папку, это приведет к проблемам сопровождения приложения.
Внимание
При установке на одного пользователя попытка установить приложение в системную папку (например, в Program Files
) завершится ошибкой, так как такая установка всегда выполняется с пониженным уровнем прав. В свою очередь, при установке на всех пользователей нужно выбирать директорию, доступную всем пользователям.
Если параметр не указан:
-
Директория по умолчанию при установке на одного пользователя:
C:\Users\%username%\AppData\Local\Programs\VK Teams\
-
Директория по умолчанию при установке на всех пользователей:
C:\Program Files (x86)\VK Teams\
AUTOUPDATES. Возможность автоматического обновления
Включает или выключает автоматическое обновление через само приложение. Если автоматическое обновление выключено, тогда обновление будет доступно только через ручной запуск установщика.
Команда для включения автоматического обновления:
Команда для выключения автоматического обновления:
Если параметр не указан:
Результат зависит от способа установки. Если установка выполняется через графический интерфейс, то автообновление будет включено. Если производится тихая установка (/q
), то автообновление будет выключено.
Примечание
При установке на всех пользователей автоматическое обновление зависит не только от этого параметра, но и от других условий. Подробнее см. в разделе Установка на всех пользователей и автоматическое обновление.
AUTOLAUNCH. Автоматический запуск приложения после установки
Отвечает за запуск приложения сразу после установки. Не связан с автозапуском при старте компьютера.
Команда для включения автозапуска:
Если параметр не указан:
По умолчанию автозапуск выключен.
На текущий момент параметр актуален только для тихой установки (/q
). При установке через графический интерфейс приложение запустится после установки.
Внимание
Не рекомендуется использовать параметр при установке на всех пользователей, так как приложение запустится от имени администратора, который выполнил установку. Если пользователь авторизуется в приложении, возникнут проблемы. Подробнее см. в разделе Установка на всех пользователей и автоматический запуск после установки.
PROXY_INI. Путь к файлу с настройками прокси
Позволяет указать путь к файлу с настройками прокси, которые применятся приложением после установки. Формат файла см. в разделе Формат файла для PROXY_INI.
Пример команды для установки с заданным путем к файлу с настройками прокси:
Если в пути есть пробелы, то путь надо обернуть в двойные кавычки, при этом каждую кавычку экранировать грависом (символ обратного ударения `, находится на той же клавише, что и тильда ~).Файл может располагаться и на сервере:
Внимание
При установке на всех пользователей настройки прокси применятся только к первому пользователю, запустившему приложение после установки. Подробнее см. в разделе Особенности установки/Проброс настроек прокси.
/quiet (/q). Тихая установка
Включает режим тихой установки, то есть установка будет выполняться без запуска графического интерфейса.
Примеры команды:
Параметр можно использовать также при обновлении и удалении приложения.
Если параметр не указан:
По умолчанию режим тихой установки выключен.
/L*V. Логирование процесса установки
Включает логирование процесса установки и указывает путь до файла логов. Файлы логов помогают определить причину ошибки в случае неудачной установки.
Пример команды:
Внимание
В данном случае пути с пробелами оборачиваются в двойные кавычки, а гравис не нужен.
Параметр можно использовать также при обновлении и удалении приложения.
Если параметр не указан:
По умолчанию логирование выключено.
Использование параметров вместе
Все параметры можно использовать в одной команде:
msiexec.exe /i vkteams.msi ALLUSERS=2 MSIINSTALLPERUSER=1 `
INSTALL_ROOT=`"C:\Users\user1\tmp\VK Teams`" `
AUTOUPDATES=1 AUTOLAUNCH=1 PROXY_INI=`"\\server\DATA\VK Teams helpers\proxy.ini`" `
/q /L*V install.log
Трансформация msi-пакета с помощью Orca.exe
Для MSI-пакета предусмотрен ряд параметров, влияющих на процесс установки — в случае установки с помощью командной строки эти параметры указываются в той же самой строке. Однако иногда использование командной строки или скриптов недоступно либо неудобно. Например, при использовании Групповых политик в стандартном механизме установки приложений нет возможности указать параметры командной строки. В таких случаях параметры можно задать с помощью специального редактора Orca.exe, входящего в состав Windows SDK:
- На вход редактору подается MSI-пакет.
- В самом редакторе создаются или изменяются нужные параметры.
- Результат изменений можно сохранить в виде нового MSI-пакета либо в специальном файле трансформации (MST-файл), который хранит в себе только изменения (в этом случае для установки используется связка из MSI-пакета и MST-файла).
Рекомендуется использовать вариант с MST-файлом. Такой файл можно создать один раз и использовать его при каждом обновлении вместе с новым MSI-пакетом.
Подробное описание каждого параметра см. в разделе Параметры командной строки для MSI-пакета. В данном разделе для каждого параметра указаны особенности настройки в Orca.exe.
ALLUSERS. Контекст установки
Параметр уже присутствует в MSI-пакете в таблице Property. По умолчанию приложение устанавливается на одного пользователя. Для установки на всех пользователей достаточно поменять значение параметра с 2
на 1
:
INSTALL_ROOT. Директория установки приложения
По умолчанию параметр в MSI-пакете отсутствует. Чтобы указать директорию установки, параметр нужно добавить в таблицу Property. В качестве значения указать полный путь:
AUTOUPDATES. Возможность автоматического обновления
По умолчанию параметр в MSI-пакете отсутствует. Чтобы включить или выключить автоматическое обновление, параметр нужно добавить в таблицу Property. В качестве значения указать 1
для включения и 0
для выключения автообновления.
AUTOLAUNCH. Автоматический запуск приложения после установки
По умолчанию параметр в MSI-пакете отсутствует. Чтобы включить автозапуск после установки, параметр нужно добавить в таблицу Property. В качестве значения указать любой символ:
PROXY_INI. Путь к файлу с настройками прокси
По умолчанию параметр в MSI-пакете отсутствует. Чтобы указать путь к файлу с настройками прокси, параметр нужно добавить в таблицу Property. В качестве значения указать полный либо сетевой путь:
/quiet (/q). Тихая установка
Режим тихой установки с помощью MST-файла включить нельзя. Режим можно включить через службы, которые непосредственно выполняют установку (групповые политики, SCCM и т.п.).
/L*V. Логирование процесса установки
По умолчанию логирование установки MSI-пакета выключено. Его можно включить, добавив параметр MsiLogging
в таблицу Property:
Для наиболее детального логирования значение должно быть iwearucmopv
. Настройка логирования через Orca.exe не такая гибкая, как через командную строку. Например, невозможно задать путь до файла логов. По умолчанию логи пишутся в папку %TEMP%
пользователя, запустившего установку, либо в папку C:\Windows\Temp
в случае установки системным пользователем. Файл сохраняется с именем MSIxxxxx.LOG
(например, MSIe1850.LOG
).
Установка вместе с MST-файлом
Если установка вместе с MST-файлом выполняется из командной строки, то команда имеет следующий вид:
Параметры командной строки для EXE-установщика
Предполагается, что EXE-установщик будет запускаться самим пользователем. Установка производится за пару кликов, с минимальным взаимодействием с пользователем.
Однако EXE-установщик, также как и MSI-пакет, можно запускать через командную строку. При этом можно задать несколько параметров, но меньше чем для MSI-пакета.
-allusers. Контекст установки
Задает установку либо на одного пользователя, либо на всех пользователей.
Команда для установки на всех пользователей:
Команда для установки на одного пользователя:
Если параметр не указан:
Выполняется установка на одного пользователя. То же самое происходит и при запуске установщика через графический интерфейс.
Контекст установки при обновлениях:
При обновлении EXE-установщик автоматически задает контекст установки таким же, каким он был при предыдущей установке (в отличие от MSI-пакета). Подробнее см. в разделе Особенности установки.
Внимание
«Контекст установки» и «установка от имени администратора» — это разные сущности. Подробнее см. в разделе Особенности установки.
-appx. Тихая установка
Включает режим тихой установки, то есть установка будет выполняться без запуска графического интерфейса.
Пример команды:
Если параметр не указан:
По умолчанию режим тихой установки выключен.
Использование параметров вместе
Параметры можно использовать в одной команде:
Запуск MSI-пакета
EXE-установщик в конечном счете запускает тихую установку MSI-пакета. При этом автоматически задаются некоторые параметры установки MSI-пакета.
При установке на всех пользователей будут заданы следующие параметры:
При установке на одного пользователя будут заданы параметры:
Все остальные параметры принимают значения по умолчанию. Подробнее см. в разделе Параметры командной строки для MSI-пакета.
Особенности установки
Контекст установки
ОС Windows позволяет установить приложение в двух вариантах: на одного пользователя либо на всех пользователей. Эта вариативность (контекст установки) чаще всего приводит к проблемам с приложением и неожиданному для пользователя поведению.
Установка одного приложения в двух разных контекстах воспринимается системой Windows как установка двух разных приложений.
Пример 1:
На компьютере уже установлен VK Teams 24.1 на одного пользователя.
-
Если запустить установку версии 24.3 на одного пользователя, то произойдет обновление приложения (то есть всё пройдет штатно).
-
Если запустить установку версии 24.3 на всех пользователей, то VK Teams версии 24.3 установится отдельно. В результате для текущего пользователя будут доступны две версии приложения.
Пример 2:
На компьютере уже установлен VK Teams 24.3 на одного пользователя.
-
Запуск установки версии 24.1 на одного пользователя завершится ошибкой (так и должно быть, так как даунгрейд версий продуктом не предусмотрен).
-
Если запустить установку версии 24.1 на всех пользователей, то выполнится новая (отдельная) установка VK Teams 24.1. Эта версия будет доступна всем пользователям компьютера, включая текущего.
Аналогично происходит и когда одна версия установлена на всех пользователей, а потом выполняется установка другой версии на одного пользователя. Таким образом, если пользователь столкнулся с тем, что у него установлены две версии VK Teams , то причина, скорее всего, в том, что были выполнены две установки в разных контекстах.
Контекст установки и MSI-пакет
MSI-пакет не умеет определять контекст предыдущей установки. Это означает, что при каждом обновлении с помощью MSI-пакета обязательно нужно задавать такой же параметр контекста установки, как у первой установки. Если не указывать параметр вообще, всегда будет выполняться установка на одного пользователя.
Запомнить!
При каждом обновлении с помощью MSI-пакета обязательно нужно задавать такой же параметр контекста установки, как у первой установки.
Контекст установки и EXE-установщик
EXE-установщик умеет определять «старое» приложение, установленное на всех пользователей. Если оно найдено, то автоматически выполняется обновление на всех пользователей.
Установка от имени администратора
Установка от имени администратора (правый клик мыши → контекстное меню → запуск от имени администратора) никак не связана с контекстом установки.
Если обычный пользователь запустит установку от имени администратора, сам не являясь таковым, то приложение установится на одного пользователя, но на учетную запись администратора. Автоматический запуск приложения после установки будет выполнен от имени администратора — именно в его домашнюю папку будет записан кэш приложения в случае авторизации и последующей работы.
Если пользователь откроет список Приложения и возможности, например чтобы удалить приложение, то приложение в списке не отобразится, так как в нём отображаются программы, установленные либо на всех пользователей, либо конкретно на этого пользователя.
Установка на всех пользователей и автоматическое обновление
Автоматическое обновление в MSI-пакете включается параметром AUTOUPDATES
. При установке на одного пользователя этого параметра достаточно. При установке на всех пользователей появляются дополнительные условия, так как такое обновление требует прав администратора: нужно менять файлы в системных папках и, возможно, менять значения в системном реестре. При этом приложение, запущенное пользователем, наследует права этого пользователя. У рядового пользователя, как правило, нет прав администратора, поэтому попытка автоматического обновления завершится неудачей.
По этой причине реализован следующий механизм: если приложение считает, что пользователь не имеет прав администратора, то:
- выключается механизм автоматического обновления;
- скрывается кнопка проверки обновлений.
Проверка пользователя выполняется следующим образом: приложение ищет пользователя в списке локальных администраторов компьютера. Если его там нет, значит у него нет прав администратора. Поэтому, например, доменные администраторы эту проверку не пройдут.
Если приложение перезапустить от имени администратора (либо в его сессии), то механизм автоматических обновлений включается, кнопка проверки обновлений становится доступна.
Установка на всех пользователей и автоматический запуск после установки
Установка на всех пользователей требует прав администратора. Это означает, что установка выполняется с его правами, и последующий автозапуск (если был включен) также выполнится с правами администратора. Если выполнен вход в учетную запись пользователя, и пользователь не является администратором, то сперва следует закрыть приложение, иначе кэш приложения после авторизации будет сохраняться в домашнюю папку администратора, а не пользователя.
Тихая установка на всех пользователей и UAC-окно
Если пользователь не является администратором, то при установке MSI-пакета через графический интерфейс появится UAC-окно для подтверждения прав администратора. Однако в случае тихой установки (/q
) подавляется абсолютно весь графический интерфейс, включая UAC-окно. Поэтому установка на всех пользователей, если запустил ее не администратор, завершится неудачей. Чтобы этого избежать, установку нужно выполнить из командной строки, открытой от имени администратора.
Примечание
EXE-установщик способен показывать UAC-окно даже в случае тихой установки.
Проброс настроек прокси
В приложении можно задавать настройки прокси. Заданные настройки будут храниться в файле на диске в зашифрованном виде. Ключ для шифрования уникален для каждого пользователя, поэтому файл с сохраненными настройками нельзя клонировать между машинами.
Настройки прокси можно задать при установке: параметр PROXY_INI задает путь до файла с настройками, которые пробросятся в приложение (см. раздел Формат файла для PROXY_INI). Механизм работает следующим образом:
- во время установки файл копируется в одну из папок пользователя;
- приложение при запуске ищет этот файл, и если находит, то применяет настройки из этого файла и сразу же удаляет его.
Зачем выполняется удаление файла: файл хранит данные в незашифрованном виде, и время его жизни должно быть минимизировано.
Внимание
В приложении прокси настраивается независимо для каждого пользователя. При установке на всех пользователей настройки применятся к первому пользователю, запустившему приложение после установки. По этой причине установку следует выполнять с выключенным автозапуском, иначе настройки прокси применятся на учетную запись администратора.
Установка через групповые политики
Общая информация
Способы установки
Групповые политики позволяют установить приложение двумя способами:
- Установка MSI-пакетов с помощью политики Software Installation. Этот способ является стандартным для Windows, так как данная политика позволяет полностью управлять приложением: публиковать, устанавливать, обновлять, удалять.
- Через запуск самописных скриптов либо при запуске системы, либо при входе пользователя. Можно использовать как MSI-пакет, так и EXE-установщик. В этом случае администратор ответствен за реализацию всей дополнительной логики.
Пути до файлов и настройка доступов
Пути до файлов (MSI-пакет, MST-файлы, настройки прокси proxy.ini, PowerShell-скрипты) должны быть сетевыми. В свойствах папки, где лежат эти файлы, нужно настроить доступы как на вкладке Sharing, так и на вкладке Security. При установке на одного пользователя доступы нужно раздать на соответствующих пользователей. При установке на всех пользователей доступы нужно раздать на соответствующие компьютеры.
Особенности, связанные с Active Directory
Если в Active Directory используются перемещаемые профили и у пользователей есть возможность подключаться к разным компьютерам, то рекомендуется выбирать установку на всех пользователей. Установка на одного пользователя все равно выполняет некоторые действия на системном уровне. В частности, после установки в кэше Windows сохраняется MSI-пакет, так как он необходим для правильного удаления (и обновления) приложения. Таким образом, если пользователь установил приложение на одном компьютере, он не сможет удалить или обновить это приложение на другом компьютере.
Установка с помощью политики Software Installation
При установке с помощью политики Software Installation можно использовать только MSI-пакеты. Описанные ниже действия проверялись на Windows Server 2019. В других версиях ОС могут быть небольшие отличия.
Настройка политки
- Создайте политику, привяжите её к нужным компьютерам или пользователям. Откройте окно редактирования политики.
- В зависимости от контекста установки выберите корневой раздел: Computer Configuration для установки на всех пользователей, User Configuration для установки на одного пользователя.
-
Перейдите в подраздел Policies → Software Settings → Software Installation.
-
Вызовите меню нажатием правой кнопки мыши и выберите добавление нового пакета.
-
Укажите сетевой путь до MSI-пакета.
- Выберите способ развертывания Advanced. После этого откроется окно настройки приложения.
-
В разделе Deployment выберите тип развертывания Assigned. В случае установки на одного пользователя включите опцию Install this application at logon. Установка будет выполняться автоматически при запуске компьютера либо при входе пользователя, в зависимости от контекста установки.
-
Если выполняется обновление, убедитесь, что в разделе Upgrades указана предыдущая версия приложения.
-
При необходимости настройте дополнительные параметры запуска MSI-пакета с помощью Orca.exe, сохраните их в MST-файл и добавьте этот файл в разделе Modifications.
-
Подтвердите все выполненные действия нажатием на кнопку OK.
Настройка параметров MSI-пакета
Про настройку параметров MSI-пакета с помощью Orca.exe см. в разделе Трансформация MSI-пакета с помощью Orca.exe. В случае установки через Групповые политики появляются особенности использования некоторых параметров:
Установка через запуск самописных скриптов
Что нужно учесть
При выборе данного способа установки учтите его преимущества и недостатки.
Преимущества:
- Более подходящий способ для автоматических обновлений. Не возникнет конфликта, как в случае с 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`""
}
Включение политики запуска скрипта
При установке на всех пользователей
- Создайте политику и привяжите ее к нужным компьютерам.
- Откройте окно редактирования политики.
- Выберите корневой раздел: Computer Configuration.
- Перейдите в подраздел Policies → Windows Settings → Scripts.
- Двойным кликом по Startup откройте окно добавления скриптов.
- Перейдите на вкладку PowerShell Scripts.
- Добавьте скрипт, указав сетевой путь до него.
-
Подтвердите выполненные действия нажатием на кнопку OK.
При установке на одного пользователя
Предварительно разрешите пользователям выполнять установку от их имени:
-
Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows Installer.
-
Откройте политику Turn Off Windows Installer, включите её и задайте значение Never.
-
Откройте политику Prohibit User Installs, включите её и задайте значение Allow User Installs.
-
Созданную групповую политику примените не на пользователей, а на компьютеры.
Включите политику запуска скрипта:
- Создайте политику и привяжите ее к нужным пользователям.
- Откройте окно редактирования политики.
- Выберите корневой раздел: User Configuration.
-
Перейдите в подраздел Policies → Windows Settings → Scripts.
-
Двойным кликом по Logon откройте окно добавления скриптов.
- Перейдите на вкладку PowerShell Scripts.
-
Добавьте скрипт, указав сетевой путь до него.
-
Подтвердите выполненные действия нажатием на кнопку OK.
Формат файла для PROXY_INI
Файл имеет формат ключ=значение
. Обязательные группы отсутствуют. Ниже приведен шаблон файла:
# Тип прокси. Если ключ не указан, задается значение auto.
# Пустое значение будет считаться ошибкой.
proxy_type=[auto, http, socks4, socks5]
# Использовать системный прокси. Значение по умолчанию false.
# Все, что не "true" и не "1", будет считаться false.
use_system=[true, false]
# Все ключи ниже используются, только если proxy_type != auto.
# Хост и порт. Если нужны, но не указаны, будут применены пустой хост и нулевой порт.
host=127.0.0.1
port=1234
# Нужна ли авторизация. Дефолтное значение false.
# Все, что не "true" и не "1", будет считаться false.
need_auth=[true, false]
# Если нужна авторизация: имя пользователя и пароль.
# Если значения нужны, но не указаны, будут применены пустые значения.
username=user
password=1234
# Тип авторизации. Используется, только если proxy_type == http.
# Значение по умолчанию basic. Пустое значение будет считаться ошибкой.
auth_type=[basic, digest, negotiate, ntlm]
Решение проблем
После установки программы нет ни в Пуске, ни в списке программ в «Приложения и возможности»
-
Возможная причина 1: установка была выполнена от имени другого пользователя. Приложение можно установить либо на одного пользователя, либо на всех пользователей. Если пользователь А установил приложение на одного пользователя, то пользователь Б это приложение не увидит ни на рабочем столе, ни в списке Приложения и возможности. В этом списке отображаются программы, установленного конкретно на этого пользователя либо на всех пользователей. Подробнее см. в разделе Особенности установки/Контекст установки.
-
Возможная причина 2: к такой ситуации также приводит запуск установки от имени администратора. Если администратор и пользователь — разные учетные записи, то установка на одного пользователя и от имени администратора выполнится в учетную запись администратора, а не пользователя.
В меню Пуск, а также в списке «Приложения и возможности» отображаются два приложения VK Teams
Скорее всего, были выполнены две установки в разных контекстах: одна — на одного пользователя, другая — на всех пользователей. Это могло произойти, если выполнялось обновление через MSI-пакет, но при обновлении не указали контекст установки. MSI-пакет не умеет автоматически определять контекст, поэтому при обновлении с помощью MSI-пакета нужно указывать тот контекст, в котором была выполнена первичная установка. Подробнее см. в разделе Контекст установки и MSI-пакет.
При установке новой версии не выполнилось удаление предыдущей версии
Контекст новой установки отличается от контекста предыдущей установки (иначе обновление программы выполнилось бы). MSI-пакет не умеет автоматически определять контекст. Каждый раз при обновлении с помощью MSI-пакета нужно указывать тот контекст, в котором была выполнена первичная установка. Подробнее см. в разделе Контекст установки и MSI-пакет.
Нет кнопки проверки автообновлений, хотя установка выполнялась со включенным параметром
Если приложение установлено на всех пользователей, то причина в том, что пользователь, который запустил приложение, не является локальным администратором компьютера. В таком случае механизм автоматического обновления выключается, а кнопка проверки скрывается. Подробнее см. в разделе Установка на всех пользователей и автоматическое обновление.
После установки не применились настройки прокси
Если приложение установлено на всех пользователей и файл с настройками не содержит ошибок, то причина в том, что после установки был выполнен автоматический запуск приложения от имени администратора, который производил установку. В случае установки на всех пользователей автоматический запуск нужно выключать. Подробнее см. в разделе Проброс настроек прокси.
Установка в Program Files завершается неудачей с ошибкой «Недостаточно прав»
Скорее всего, выполнялась установка на одного пользователя, однако при такой установке никогда не запрашивается повышение прав, даже если они нужны. Поэтому если в процессе установки выбран путь Program Files
и пользователь является администратором, то у сервиса установки всё равно не хватает прав на запись в эту папку.
Как удалить все копии приложения VK Teams с компьютера
Удалить приложение можно через командную строку: msiexec /x "{product_guid}"
Команду нужно выполнить для каждого идентификатора. Если установлено две копии одной версии, на одного пользователя и на всех пользователей, то GUID у них будет общий, а команду удаления нужно будет вызвать два раза.
В Windows нет возможности посмотреть и удалить приложения, которые были установлены на одного пользователя, но в учетные записи других пользователей. Удалить VK Teams у этих пользователей можно только войдя в их учетную запись и повторив действия, указанные выше.
Подробнее о контексте установки можно посмотреть в разделе Особенности установки/Контекст установки.
Как получить GUID установленного VK Teams
Чтобы узнать GUID приложения, в командной строке (terminal либо PS) выполните команду:
$Installer = New-Object -ComObject WindowsInstaller.Installer;
$InstallerProducts = $Installer.ProductsEx("", "", 7);
$InstalledProducts = ForEach($Product in $InstallerProducts)
{
[PSCustomObject]@{ProductCode = $Product.ProductCode();
LocalPackage = $Product.InstallProperty("LocalPackage");
VersionString = $Product.InstallProperty("VersionString");
ProductPath = $Product.InstallProperty("ProductName")}
};
foreach ($product in $InstalledProducts)
{
if ($product.ProductPath -eq "VK Teams") { $product }
}
Отобразится список найденных приложений, идентификаторы будут указаны в первом столбце.
Внимание
- В списке будут представлены приложения VK Teams , которые установлены как на всех пользователей, так и на одного пользователя. Получить из учетной записи текущего пользователя список приложений, установленных на другого пользователя, нельзя.
- GUID MSI-пакета (Меню → Свойства → Подробно → Источник → Редакция) и GUID приложения, которое будет установлено этим пакетом — отличаются. Для управления приложением нужно использовать только GUID приложения.