Редактировать конфиг в ProgramFiles с включенным UAC - PullRequest
3 голосов
/ 15 апреля 2011

Мой вопрос очень похож на Запуск приложения после завершения установки с включенным UAC

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

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

Опции, которые мы знаем и предпочитаем не использовать:

  • для поднятия всего установщика с помощью начальной загрузки - мы не хотели бы делать это, чтобы поддержать 1 действие execute config в конце с повышенными правами.
  • включая принудительное повышение прав в процессе настройки - хотя в некоторых случаях мы могли бы встроить это в приложение, в некоторых случаях мы хотим запустить простой редактор в App.config, где это принудительное повышение не было бы возможным.

Есть ли способ получить расширенную версию

<Property Id="WixShellExecTarget" Value="[INSTALLDIR]\app.config" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" />

Или более уместно сделать пользовательский интерфейс и добавить флажок ранее в пользовательском интерфейсе и запустить его как отложенное действие без ожидания, как

<CustomAction Id="Config.SetProperty" Property="Config" Value='"Open" app.config' />
<CustomAction Impersonate="no" Execute="deferred" Return="ignore" 
    Id="Config" BinaryKey="WixCA" DllEntry="CAQuietExec" />

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

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

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

Другой вариант - хранить конфигурационные файлы в каталоге ProgramData, а не в Program Files. Это место доступно для записи без возвышения. Одно предостережение: создаваемые там файлы и каталоги будут иметь права на запись / изменение только для пользователя, который их создал; другие пользователи будут иметь доступ только для чтения. Если это нежелательно, вы можете изменить ACL для файлов конфигурации вашего приложения.

0 голосов
/ 18 апреля 2011

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

Запустите его по завершении программы установки (только из последовательности пользовательского интерфейса, связатьэто к кнопке «Готово»), чтобы обычные установки запускались и предлагали повышение прав при завершении, в то время как установки без вывода сообщений требуют от администратора ручного запуска инструмента конфигурации или редактирования файла конфигурации самим.установка файла конфигурации в качестве компонента MSI, если он был отредактирован, то ярлык Advertised или запуск «восстановления» установщика Windows заменит его на тот, который включен в MSI.Наше общее решение состояло в том, чтобы развернуть sample.config и потребовать, чтобы администратор отредактировал, скопируйте его в application.config после установки.Если файл application.config отсутствует, запускается средство настройки или отображается сообщение об ошибке.Это дает дополнительное преимущество: конфигурация сохраняется при удалении / обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...