Member 13458729 Ответов: 3

.MSI пакет установлен ( как администратор) для всех, но на разных логинах пользователя пытается найти его .MSI устанавливается для запуска exe-файла


Привет,

Я создал настольное приложение с использованием C#.
Созданный установочный файл (.msi) устанавливается на клиентскую машину администратором с помощью его учетной записи входа в систему. Во время процесса установки выбирается опция "все", чтобы убедиться, что exe-файл доступен всем пользователям. Ярлык размещается на рабочем столе для каждого пользователя.
Затем он удаляет установочный файл.
Но когда фактический пользователь входит в систему ( кроме администратора) и пытается запустить приложение, нажав на ярлык, приложение начинает ссылаться на него .MSI устанавливается для запуска.

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

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

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

Заранее спасибо,
Вок

Что я уже пробовал:

Новичок в этом вопросе подскажите мне как преодолеть эту проблему

lmoelleb

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

3 Ответов

Рейтинг:
2

Member 13458729

После открытия SRX с поддержкой Microsoft у меня наконец-то есть реальный ответ.

Это скопировано с форума:

"Я провел дополнительные исследования поведения и обнаружил, что его можно воспроизвести даже с помощью очень простого проекта настройки. Я использовал редактор Orca MSI для проверки файла .msi и обнаружил, что в таблице реестра корневой столбец имеет значение 1, Что означает, что корневой ключ реестра будет HKEY_CURRENT_USER . Поэтому я изменил его на -1, что означает, что корневой ключ реестра будет зависеть от выбора пользователя: для каждого пользователя или для каждой установки машины. Вы можете ссылаться http://msdn.microsoft.com/en-us/library/aa371168(VS.85).aspx для большего количества deails.

После того, как я изменю корневое значение с 1 на -1, если я запущу файл .msi и установлю приложение для всех пользователей, то раздел реестра будет создан под HKLM вместо HKCU. Таким образом, когда второй пользователь входит в систему, он может нормально запускать приложение.

Я не уверен, почему в VS 2008 проект установки имеет эти ключи реестра, созданные под HKCU, но сейчас вы можете изменить его в Редакторе ORCA MSI, чтобы он работал для вас."


Рейтинг:
1

Dave Kreskowiak

Ярлык, который вы используете для запуска приложения, называется "рекламируемый". Это означает, что при запуске, то .MSI находится, и все "ключевые пути" проверяются, файлы и ключи реестра/значения, чтобы убедиться, что ничего не пропало. Если это так, то ... MSI необходим для получения данных для воссоздания этих файлов/значений.

Это происходит как для конкретных машинных местоположений (например, HKEY_LOCAL_MACHINE и C:\Program файлы) и пользовательские местоположения (например, HKEY_CURRENT_USER и C:\Users\[userId]).

[РЕДАКТИРОВАТЬ]
Я забыл упомянуть, что именно так устанавливаются функции приложения "по требованию". Например, вы можете установить некоторые приложения Office, такие как Word и Excel, а затем другие приложения могут быть просто ярлыками, для которых ничего не установлено, например Outlook, пока вы не попытаетесь запустить его из ярлыка. Только после этого будет установлен Outlook.


Рейтинг:
0

Gerry Schmitz

Процедура установки / сценарий неисправен.

Создаваемый ярлык указывает на "msi", а не на установленный exe-файл.

Щелкните правой кнопкой мыши ярлык, чтобы увидеть свойства / целевую папку. Выясните, почему он указывает на то, где он находится.