WIX ToolSet Условная логика игнорируется ⇐ C#
WIX ToolSet Условная логика игнорируется
У меня возникли проблемы при попытке выполнить автоматическую установку после поиска в реестре установленных версий определенного программного обеспечения. Это настраиваемое действие должно затем установить условную переменную на «1», а затем, используя условие в моем файле .wxs, условно установить правильные файлы. Если я закомментирую условия, он установится без проблем. Проверенные журналы и условия устанавливаются на «1», но, похоже, это игнорируется в логике условий. Вот мой код:
(Не установлен) REVIT2020 УСТАНОВЛЕН ИЛИ REVIT2021 УСТАНОВЛЕН ИЛИ REVIT2022 УСТАНОВЛЕН ИЛИ REVIT2023 УСТАНОВЛЕН ИЛИ REVIT2024 УСТАНОВЛЕН REVIT2020INSTALLED REVIT2020INSTALLED REVIT2020INSTALLED и мой код специального действия:
общедоступный класс VersionCheckActions { [ПользовательскоеДействие] общедоступный статический ActionResult CheckRevitVersion (сеанс сеанса) { session.Log("Начать проверкуRevitVersion"); Список revitPaths = новый список(); пытаться { // Проверяем наличие каждой версии Revit CheckAndSetProperty(session, «2020», «REVIT2020INSTALLED», revitPaths); CheckAndSetProperty(session, «2021», «REVIT2021INSTALLED», revitPaths); CheckAndSetProperty(session, «2022», «REVIT2022INSTALLED», revitPaths); CheckAndSetProperty(session, «2023», «REVIT2023INSTALLED», revitPaths); CheckAndSetProperty(session, «2024», «REVIT2024INSTALLED», revitPaths); // Объединяем пути session["REVIT_PATHS"] = string.Join("; ", revitPaths); session.Log("Проверка RevitVersion завершена"); вернуть ActionResult.Success; } поймать (Исключение ex) { session.Log($"Исключение в CheckRevitVersion: {ex.Message}"); вернуть ActionResult.Failure; } } [ПользовательскоеДействие] Private static void CheckAndSetProperty (сеанс сеанса, строковая версия, строка installFlagProperty, List revitPaths) { var regKeyPath = $@"SOFTWARE\Autodesk\Revit\{version}"; используя (ключ RegistryKey = Registry.LocalMachine.OpenSubKey(regKeyPath)) { session.Log($"Проверка пути реестра: {regKeyPath}"); если (ключ != ноль) { session[installFlagProperty] = "1"; // устанавливаем свойство, если ключ реестра существует session.Log($"Найден ключ реестра. Настройка {installFlagProperty}."); string installPath = $@"C:\ProgramData\Autodesk\Revit\Addins\{версия}"; revitPaths.Add(installPath); session.Log($"Добавлен путь установки: {installPath}"); } еще { session.Log($"Ключ реестра не найден для {версии}."); } } } Пожалуйста, помогите, я застрял в этом вопросе уже два дня! При необходимости мы будем рады добавить больше кода. Надеюсь, это имеет смысл для вас!
У меня возникли проблемы при попытке выполнить автоматическую установку после поиска в реестре установленных версий определенного программного обеспечения. Это настраиваемое действие должно затем установить условную переменную на «1», а затем, используя условие в моем файле .wxs, условно установить правильные файлы. Если я закомментирую условия, он установится без проблем. Проверенные журналы и условия устанавливаются на «1», но, похоже, это игнорируется в логике условий. Вот мой код:
(Не установлен) REVIT2020 УСТАНОВЛЕН ИЛИ REVIT2021 УСТАНОВЛЕН ИЛИ REVIT2022 УСТАНОВЛЕН ИЛИ REVIT2023 УСТАНОВЛЕН ИЛИ REVIT2024 УСТАНОВЛЕН REVIT2020INSTALLED REVIT2020INSTALLED REVIT2020INSTALLED и мой код специального действия:
общедоступный класс VersionCheckActions { [ПользовательскоеДействие] общедоступный статический ActionResult CheckRevitVersion (сеанс сеанса) { session.Log("Начать проверкуRevitVersion"); Список revitPaths = новый список(); пытаться { // Проверяем наличие каждой версии Revit CheckAndSetProperty(session, «2020», «REVIT2020INSTALLED», revitPaths); CheckAndSetProperty(session, «2021», «REVIT2021INSTALLED», revitPaths); CheckAndSetProperty(session, «2022», «REVIT2022INSTALLED», revitPaths); CheckAndSetProperty(session, «2023», «REVIT2023INSTALLED», revitPaths); CheckAndSetProperty(session, «2024», «REVIT2024INSTALLED», revitPaths); // Объединяем пути session["REVIT_PATHS"] = string.Join("; ", revitPaths); session.Log("Проверка RevitVersion завершена"); вернуть ActionResult.Success; } поймать (Исключение ex) { session.Log($"Исключение в CheckRevitVersion: {ex.Message}"); вернуть ActionResult.Failure; } } [ПользовательскоеДействие] Private static void CheckAndSetProperty (сеанс сеанса, строковая версия, строка installFlagProperty, List revitPaths) { var regKeyPath = $@"SOFTWARE\Autodesk\Revit\{version}"; используя (ключ RegistryKey = Registry.LocalMachine.OpenSubKey(regKeyPath)) { session.Log($"Проверка пути реестра: {regKeyPath}"); если (ключ != ноль) { session[installFlagProperty] = "1"; // устанавливаем свойство, если ключ реестра существует session.Log($"Найден ключ реестра. Настройка {installFlagProperty}."); string installPath = $@"C:\ProgramData\Autodesk\Revit\Addins\{версия}"; revitPaths.Add(installPath); session.Log($"Добавлен путь установки: {installPath}"); } еще { session.Log($"Ключ реестра не найден для {версии}."); } } } Пожалуйста, помогите, я застрял в этом вопросе уже два дня! При необходимости мы будем рады добавить больше кода. Надеюсь, это имеет смысл для вас!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проверка типов данных, условная логика и использование np.where,df.sort_values и cumsum
Anonymous » » в форуме Python - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проверка типов данных, условная логика и использование np.where,df.sort_values и cumsum
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-