Использование utilregistrysearch в wixsharp
У меня есть пакет Wix sharp, который я создаю, и я пытаюсь использовать UtilRegistrySearch для проверки версии .NETFramework, которая находится на целевой машине:
новый UtilRegistrySearch
{
Root = RegistryHive.Локальная машина,
Ключ = "программное обеспечение\Майкрософт\net на настройка\НДП\В4\полный",
Значение = " Release",
Переменная = " NetFrameworkVersion";
}
Я хочу взять эту переменную NetFrameworkVersion и использовать ее в качестве моего условия установки для установки .NET framework 4.6.1 если целевой компьютер не находится по крайней мере в .NET Framework 4.5
ExePackage dotNet_exe = новый ExePackage (@"prereqs\DotNet4.6.1.exe")
{
Name = " Microsoft .NET Framework 4.6.1",
InstallCommand = " / passive /norestart",
InstallCondition = " NetFrameworkVersion < 394254",
};
Проблема в том, что значение реестра, которое я проверяю, является REG_SZ, и поэтому переменная NetFrameworkVersion является строкой. Так что, похоже, сравнение с целым числом (394254) не работает. Есть какие-нибудь идеи о том, как я могу привести переменную к int или что я должен сделать, чтобы правильно определить условие установки?
Что я уже пробовал:
Попробовал просто установить InstallCondition следующим образом:
InstallCondition = " NetFrameworkVersion"
InstallCondition = " NetFrameworkVersion < 394254"
и использование DetectCondition
DetectCondition = " NetFrameworkVersion",
Richard MacCutchan
Все зависит от того, что содержит строка. Если это простое число, то используйте один из методов синтаксического анализа, чтобы преобразовать его в целое число.
Richard MacCutchan
В моей системе это значение является REG_DWORD и содержит число 394254.
allen.thurman
на самом деле ваше право-это REG_DWORD. Так стоит ли мне менять формат?
новый UtilRegistrySearch
{
Root = RegistryHive.Локальная машина,
Ключ = "программное обеспечение\Майкрософт\net на настройка\НДП\В4\@полная",
Значение = " Release",
Формат = WixSharp.Загрузчика.SearchFormat.совместимость,
Переменная = " NetFrameworkVersion"
}
Richard MacCutchan
Извините, я не понимаю, что вы имеете в виду.