Приложение, установленное с WiX, не будет работать должным образом, если не запущено от имени администратора - PullRequest
4 голосов
/ 03 ноября 2010

Этот существующий вопрос о SO , вероятно, именно то, что мне нужно, но на него не было ответа. ;)

Я не осознавал этого при первоначальном тестировании установщика WiX, но мое приложение не работает должным образом в Windows 7 после его установки. Различные сборки должны читать / записывать файлы в моей папке установки, но доступ запрещен во время выполнения.

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

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

Может кто-нибудь объяснить, почему: 1. Мой исполняемый файл, запускаемый из папки bin / Debug, не должен запускаться от имени администратора и работает? 2. Как я могу заставить WiX установить исполняемый файл, чтобы он работал точно так же? (т.е. не требует щелчка правой кнопкой мыши + Запуск от имени администратора)

Спасибо!

1 Ответ

6 голосов
/ 03 ноября 2010

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

Теперь, когда я ругал вас за попытку сделать это, я приведу пример из установщика WiX для программы, которую я поддерживаю, которая выполняет такую ​​же непослушную запись в файл журнала:

<Directory Id="DirectoryLogs" Name="Logs">
    <Component Id="ComponentCreateFolderLogs" Guid="SOME-GUID">
        <CreateFolder>
            <Permission
                GenericAll="yes"
                User="Authenticated Users" />
        </CreateFolder>
        <RemoveFile
            Id="RemoveFileLogsAll"
            Name="*.*"
            On="uninstall" />
    </Component>
</Directory>

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

Отличный дизайн? Нет - требования к логотипу Windows приводят в замешательство по этому поводу - но это часто случается, особенно во внутренней среде, поэтому вы так и делаете.

Удачи!

...