inno-setup – Inno Setup – 将用户文件放入管理文档中

前端之家收集整理的这篇文章主要介绍了inno-setup – Inno Setup – 将用户文件放入管理文档中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个Windows 7用户,当他们自己安装和登录时,会被要求提供管理员密码.发生这种情况时,Inno Setup会为该用户安装程序,但会将示例数据文件放在Admin的文档文件夹中.

我该怎么做才能确保Inno Setup将示例数据文件放在用户的Documents文件夹中?

[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;

解决方法

你的方法不正确.

有两种正确的方法

>如果安装程序仅为当前(非特权用户)安装应用程序,则不需要管理员权限.

Privilegesrequired=lowest

然后{userappdata} constant(和类似的)将正确引用当前用户文件夹.
>如果安装程序为所有用户安装应用程序,则将某些文件放入某个特定用户文件夹中是没有意义的.所有用户都需要这些文件,而不仅仅是文件.在这种情况下,建议的方法是使用{commonappdata} constant(或类似)将文件安装到“Common”文件夹.并让应用程序在第一次运行时将文件复制到用户文件夹.

另见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.

对于其他类似的问题,请参阅

> Inno Setup Using {localappdata} for logged in user
> Inno Setup always installs into admin’s AppData directory

话虽如此,您可以通过使用ExecAsOriginalUser function(或[运行]部分中的runasoriginaluser flag)执行外部复制实用程序(copy,xcopy,robocopy)来执行您要求的操作.

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

有关此方法的更多详细信息,请参阅类似的问题Inno Setup Creating registry key for logged in user (not admin user).

原文链接:https://www.f2er.com/delphi/102957.html

猜你在找的Delphi相关文章