Создание будущего установщика.NET 3.5 SP1 для установки setup.exe и MSI-файла
Я потребовал.NET 3.5 SP1 а-ля Обновится ли проект установки VS2008 Net 3.5 SP1?, Это заставляет setup.exe проверить правильно.
Я также добавил условие запуска "SP1" в мой MSI, чтобы оно не позволяло пользователю установить мое приложение.NET 3.5SP1 через запуск MSI (и заменило [VSDNETMSG]
в сообщении условия Framework с тем, который на самом деле упоминает SP1).
С точки зрения проверки будущего, это кажется неправильным. Я хочу, чтобы условие было:
(NETVer=3.5 AND Net35SPLevel=1) OR (NETVer=>3.5)
не
(NETVer=3.5 AND Net35SPLevel=1)
Есть ли способ сделать это? Проверка рамок не имеет свойства условия, позволяющего мне добавлять подусловие...
Да, я мог бы также не волноваться об этом, моя милая маленькая голова:P
Если один из экспертов по версиям MS там читает это, если вы собираетесь помещать материал, от которого зависит код, в SP, не могли бы вы сделать так, чтобы установщик смог проверить его на OOTB.
(Я действительно хотел бы, чтобы они придумали лучшую схему нумерации - мир и его собака могли видеть, что это может запутаться)
1 ответ
Ах, как указывалось в статье, на которую ссылается другой пост, на который я ссылался, вы могли бы использовать тот факт, что поиск в реестре, который не удался, приведет к пустой строке (тогда как #0
а также #1
получится, если 3.5 действительно установлен и использовать выражение:
(NET35SPLEVEL="") OR NOT (NET35SPLEVEL>>"0")
Это делает проверку дизъюнкцией, а не конъюнкцией [1]
Что решает проблему - проверка не провалится на 4.0 без SP.
Остается проблема, которая по-прежнему не распространяется на случай, когда установлено 4/4.1/4/5/5/6 и на машине есть неупакованный пакет 3.5... (так что я не принимаю мой ответ!)
[1] Не так ли, Адам!