Некоторые пользователи VMware ThinApp сталкиваются со следующей проблемой при развертывания виртуализованных приложений: некоторые приложения разработаны под конкретную версию ОС Windows, тип (64 bit или 32 bit) и даже Service Pack. В этом случае приложение может, например, работать корректно в Windows 7 и некорректно в Windows Vista.
Таким образом, при массовом развертывании пакетов ThinApp один и тот же пакет администратор может разместить на машины с разными версиями ОС, что приведет к появлению трудновыявляемых проблем. Кроме этого, в освещенном нами решении VMware Horizon Application Manager, у пользователей появляется возможность самостоятельного развертывания пакетов в корпоративной инфраструктуре.
Как же сделать так, чтобы установка приложения VMware ThinApp зависела от версии ОС Windows? В самом ThinApp такого механизма нет, поэтому придется обратиться к редактированию шаблона msi-установщика, используемого ThinApp. Это позволит установочному пакету ThinApp MSI устанавливаться только на ограниченных условиями операционных системах.
Делается это так:
1. Заходим в каталог %programfiles%\VMware\VMware ThinApp и видим там файл template.msi, который можно открыть с помощью утилит для редактирования MSI установщиков. Можно воспользоваться утилитой Microsoft - Orca. Но перед внесением изменений надо сделать резервную копию этого файла, так как нам потом понадобится откатить изменения (см. пункт 5).
2. Открываем шаблон template.msi и создаем новую таблицу LaunchCondition, для которой создаем новое условие (Condition), где в качестве значения вводим ограничение запуска пакета:
Для запуска только на ПК с ОС Windows 7 - условие "VersionNT=601". В поле "Description" вводим сообщение, которое нужно показать пользователю при запуске пакета, например "Это приложение может быть запущено только под Windows 7"
Для запуска только на Windows XP Service Pack 3 или выше используем условие "VersionNT=501 AND ServicePackLevel>=3"
Для запуска только на 32-битной ОС добавляем условие "Not VersionNT64"
3. Добавляем новый Action "LaunchConditions" в существующую таблицу "InstallExecuteSequence", где добавляем условие "Not Installed" с номером сущности (Sequence number) - "410".
4. Билдим проект ThinApp, используя файл Build.bat в папке с проектом. В результате в папке bin создастся новый MSI-пакет с настроенным условным запуском.
5. Важно: все последующие билды проектов ThinApp будут происходить с добавлением данных условий, поэтому необходимо будет откатить изменения, сделанные в Template.msi
Ну а вот так будут выглядеть сообщения, выдаваемые при запуске виртуализованного приложения на версии Windows, которая не подпадает под указанные в установщике условия: