Установщик MSI возвращает измененные установочные файлы, если приложение запускается с другим пользователем

У меня есть сценарий, На определенной машине я устанавливаю собственное программное обеспечение с помощью установщика MSI. Установщик MSI создается с тегом PerMachine, поэтому программное обеспечение доступно для всех пользователей этой машины. Сейчас,

  1. Я установил программное обеспечение в каталог C:\MyApp\.
  2. Затем я изменил несколько файлов конфигурации в папке C:\MyApp\Config, чтобы убедиться, что программное обеспечение подключается к другим моим службам.
  3. Я запустил приложение, оно работает нормально.

Теперь на той же машине я зашел под другим пользователем.

  1. Я запустил приложение.
  2. Всплывающее окно MSI с индикатором выполнения установки.
  3. Он исчезает, и приложение запускается, но не загружается.
  4. Но все файлы, которые я изменил, теперь восстановлены, мне нужно снова их изменить.

Несколько моментов:

  1. Мой каталог установки — C:\MyApp, а не какой-либо пользовательский каталог. Так что измененные файлы должны быть у всех пользователей.
  2. Я думаю, что MSI откатывает изменения, когда я вхожу в систему с новым пользователем.

Как остановить это?

Пожалуйста помоги

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
276
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самовосстановление: Самовосстановление установщика Windows является причиной поведения, которое вы видите. Смотрите ссылку для объяснения того, что происходит. Подробнее смотрите здесь - несколько ссылок с информацией по самостоятельному ремонту с разных сторон.

Краткое пояснение. По сути, запуск рекламируемого ярлыка запускает проверку целостности установленных файлов, и если обнаруживается, что файл или параметр реестра отсутствует, происходит самовосстановление. Он заменит отсутствующие файлы и настройки. Во время этого процесса он иногда перезаписывает измененные файлы настроек - проблема, которую вы описываете (из-за различных странностей перезаписи файлов установщика Windows - длинный ответ с различными намеками).

Исправление?: Мое предпочтительное решение для этого — не устанавливать файлы настроек и не обновлять их, а скорее создавать их приложением при первом запуске — либо один файл для каждого пользователя, либо общий для всех пользователей. Вы также можете использовать доступную только для чтения копию устанавливаемого файла настроек для копирования в новый файл, который вы создаете и обновляете. Я также рекомендую поместить эти файлы в доступное для записи место в профиле пользователя, а не в основной папке. Ваша установка никогда не будет мешать этим сгенерированным файлам. Вы также можете попробовать установить компонент хостинга для файлов «постоянно» и «никогда не перезаписывать». Не очень аккуратно. Вот целый разглагольствования на эту тему. Самое лучшее решение, на мой взгляд, это хранить настройки в базах данных и получать их при запуске. Это позволяет хорошо контролировать все настройки. Обратите внимание на проблемы с сетью и брандмауэром.

Надеюсь, это ответит на ваш вопрос. Вы устанавливаете файлы IIS? Я считаю, что коммерческий инструмент Advanced Installer имеет лучший список функций для установки IIS, хотя мне не хватает данных, чтобы сделать вывод. Несколько видео здесь: https://www.youtube.com/c/advancedinstaller/search?query=IIS - WiX тоже очень хорош, но без приятного графического интерфейса Advanced Installer.

Примечание: вам вообще не следует ничего устанавливать в корень C:\. Установщик Windows активно пытается его усложнить, и вероятны побочные эффекты. Однако вы можете настроить таргетинг на папки IIS, где бы они ни находились.

Обновление: Я нашел этот старый ответ о том, как разрешить выборочное обновление файлов настроек - мне пришлось воскресить связанные ответы на форуме от Wayback.

Спасибо за этот подробный ответ. Это очень помогает мне правильно понять проблему, но я столкнулся с еще одним странным сценарием: я запустил ту же установку на своем другом ноутбуке с Windows 10 и выполнил описанный выше сценарий как есть, но файлы не восстанавливаются для другого пользователя, хотя в первый раз появляется индикатор выполнения MSI, но файлы не возвращаются.

Sandeep Kokate 15.12.2020 08:03

Получил некоторые ответы на вышеуказанные вопросы, файлы возвращаются для нового, созданного пользователем, который запускает приложение только в первый раз. Если мы удалили продукт, установили его снова и изменили файлы через пользователя-администратора, а затем войдите в систему с тем же другим пользователя, у которого были восстановлены файлы, теперь файлы не восстановлены.

Sandeep Kokate 15.12.2020 09:19

Что вы указали в качестве ключевого пути для компонентов, устанавливающих эти файлы? Это путь к файлу или путь к реестру?

Stein Åsmul 16.12.2020 00:09

Другие вопросы по теме