2009-04-16 3 views
0

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

Я пытаюсь создать самообновляющееся приложение .NET, которое будет работать в среде с ограниченными учетными записями пользователей. Здесь нет прав администратора. Приложение должно запускаться на Vista и XP и, вероятно, на Win 7, когда оно появляется. Распространение X-копии было бы неплохо. Я бы предпочел НЕ использовать click-once

До сих пор я пробовал систему, в которой приложение проверяет манифест и загружает обновленные двоичные файлы, которые отлично работали в разработке, но не так много, когда приложение было установлено. Vista отказывается копировать файлы в Program Files. После этого я попытался загрузить обновленный .msi, который работает, за исключением того, что MSI имеет приглашение UAC - не нужно, если у пользователя нет учетной записи с правами локального администратора.

Некоторые сообщения предположили, что запуск программы в AppData и использование метода x-copy могут работать, но я не видел, чтобы кто-то говорил, что они попробовали это, и это действительно сработало. Будет ли это работать для учетной записи без прав администратора? Может ли кто-нибудь ручаться за этот метод, прежде чем я начну писать больше кода?

+1

Любая причина, по которой вы уклоняетесь от ClickOnce? Это идеально подходит для такого рода сценариев. –

ответ

3

Вам просто нужно убедиться, что вы «устанавливаете» (т. Е. Копируете) место, к которому имеют доступ не-привилегированные пользователи.

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

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

Основные недостатки ClickOnce - это необычное место установки и примитивный установщик - если вы собираетесь делать xcopy где-то странно, то у вас уже есть что-то, что уже нелепо о ClickOnce, без каких-либо преимуществ ,

0

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

Возможно, вам также понадобится сделать какой-то пользовательский интерфейс для отображения прогресса и состояния во время процесса обновления. Достаточно легко разоблачить его через службу WCF или тому подобное.

Смежные вопросы