Как работает опция InstallAllUsers? - PullRequest
4 голосов
/ 29 марта 2012

У меня есть приложение на C # и проект установки Visual Studio (2010) с ним.В моем проекте установки я использую InstallAllUsers = True.Кроме того, мое приложение должно запускаться при запуске, поэтому в User's Startup Folder добавляется ярлык.

Поэтому я устанавливаю свое приложение как пользователь Bob (из общего ресурса), а затем выхожу из системы и захожу как пользователь Alice.Алиса получает диалоговое окно, которое говорит:

Функция, которую вы пытаетесь использовать, находится на недоступном сетевом ресурсе.

Он предоставляет сетевой путь, из которого MSIбыл установлен.Так что, в основном, он ищет MSI для общего ресурса, к которому у Алисы нет доступа.Это многократно воспроизводится, если Алиса пытается вручную запустить ссылку «Запуск». Однако Алиса может напрямую запустить exe-файл из места установки, что прекрасно работает.

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

Но если это так, то я не понимаю, почему MSI требуется только при запуске по ссылке Startup, а не из exe-файла напрямую.

Мой вопроснесколько частей:

  1. Есть ли ожидаемое поведение для опции InstallAllUsers?
  2. Если так, как я могу убедиться, что мое приложение полностью установлено для всех пользователей?
  3. Нужно ли копировать MSI локально и гарантировать, что он не будет удален до того, как у каждого пользователя будет возможность войти в систему?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Это происходит из-за того, что ярлыки являются «объявленными ярлыками» и, следовательно, выделены серым цветом.

Подробнее здесь ...

http://www.advancedinstaller.com/user-guide/advertised-shortcuts.html

Когда запускается рекламируемый ярлык, он проверяет чеки связаны с ключевыми ресурсами. Если что-то отсутствует, это исправит запустить установочный пакет и установить заново всю информацию из MSI-файла.

Вот почему он пытается запустить MSI.

Вы можете отключить объявленные ярлыки, прочитав эту статью ...

DISABLEADVTSHORTCUTS = 1 отключает все ярлыки

Если его установят все пользователи, то ярлык, вероятно, захочет находиться в меню «Пуск всех пользователей». Win 7: C: \ ProgramData \ Microsoft \ Windows \ Start Menu.

1 голос
/ 29 марта 2012

Эрик, я бы порекомендовал взглянуть на содержимое файла ярлыка.Вы можете сделать это, используя Powershell, и есть ссылка SO, которая поможет вам в этом:

Редактирование свойств ярлыка (.lnk) с помощью Powershell

...