2016-11-05 2 views
0

У меня есть несколько пользователей Windows 7, которые при установке и входе в систему самостоятельно запрашивают пароль администратора. Когда это произойдет, Inno Setup устанавливает программу для этого пользователя, но она помещает файлы данных примера в папку документов администратора.Inno Setup - помещает файлы пользователя в документы администратора

Что я могу сделать, чтобы убедиться, что Inno Setup помещает файлы данных примера в папку «Документы пользователя», где они принадлежат?

[Files] 
Source: "C:\dev\Installer Files\Chess Openings Wizard 2016\Game Trees\*.*"; DestDir: "{code:GetDataDir}\Game Trees"; Flags: uninsneveruninstall recursesubdirs 

function GetDataDir(Param: String): String; 
begin 
    { Return the selected DataDir } 
    Result := DataDirPage.Values[0]; 
end; 

ответ

0

Не правильный.

Там два верный способ:

  1. Если программа установка устанавливает приложение для текущего (непривилегированного) только пользователя, не требующие прав администратора.

    PrivilegesRequired=lowest 
    

    Тогда {userappdata} constant (и подобное) будет правильно относиться к папке текущего пользователя.

  2. Если установщик устанавливает приложение для всех пользователей, нет смысла помещать некоторые файлы в папку одного конкретного пользователя. Все пользователи нуждаются в файлах, а не только в одном. В этом случае рекомендуется установить файлы в папку «Common», используя {commonappdata} constant (или аналогичный). И попросите приложение скопировать файлы в папку пользователя при первом запуске.

    См. Также How to write to the user's My Documents directory with installer when the user used 'Run As Administrator'.

Вы также можете разрешить пользователю выбирать между этими двумя подходами.
См. Make Inno Setup installer request privileges elevation only when needed.

Для других подобных вопросов см


Имея, что сказал, что вы можете сделать, что вы просите, выполнив утилиту внешнего копирования (copy, xcopy, robocopy) с использованием ExecAsOriginalUser function (или runasoriginaluser flag в раздел [Run]).

ExecAsOriginalUser(
    'cmd.exe', '/c xcopy.exe "sourcefile" "%APPDATA%"', 
    '', SW_HIDE, ewWaitUntilTerminated, ResultCode); 

Более подробно об этом подходе см аналогичный вопрос Inno Setup Creating registry key for logged in user (not admin user).

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

  • Нет связанных вопросов^_^