如何在Inno Setup中为每个用户安装文件,包括未来的新用户?

我有一个安装程序需要分发一些默认文件供用户修改。 每个Windows用户configuration文件都需要自己拥有这些(可写入)文件的副本,包括将来在Windows中创build新用户时。

我已经知道如何分配给当前用户的configuration文件,但不知道所有的用户configuration文件,尤其是未来的用户。 我已经看到一些软件可以自动将文件包含在新的Windows用户configuration文件中。

我如何让Inno安装程序以这种方式分发文件?

Solutions Collecting From Web of "如何在Inno Setup中为每个用户安装文件,包括未来的新用户?"

对于所有现有帐户,请参阅:
Inno Setup在所有用户的所有桌面上创建单独的快捷方式


对于将来的帐户:无论是在Default User配置文件会自动复制到所有新创建的配置文件。

因此,如果您想要将文件添加到所有新用户的“文档”文件夹,请将其添加到Default User配置文件的“文档”文件夹中。 典型的是:

 C:\Users\Default\Documents 

要检索正确的路径,请使用SHGetFolderPath ,将nFolder参数设置为您之后的路径(例如CSIDL_PERSONAL用于“文档”文件夹),并将hToken参数设置为-1 (默认用户配置文件)。

 [Files] Source: "default.txt"; DestDir: "{code:GetDefaultUserDocumentsPath}" [Code] const CSIDL_PERSONAL = $0005; SHGFP_TYPE_CURRENT = 0; MAX_PATH = 260; function SHGetFolderPath( hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWORD; pszPath: string): HResult; external 'SHGetFolderPathW@shell32.dll stdcall'; function GetDefaultUserDocumentsPath(Param: string): string; var I: Integer; begin SetLength(Result, MAX_PATH); if SHGetFolderPath(0, CSIDL_PERSONAL, -1, SHGFP_TYPE_CURRENT, Result) <> S_OK then begin Log('Failed to resolve path to default user profile documents folder'); end else begin { Look for NUL character and adjust the length accordingly } for I := 1 to MAX_PATH do begin if Result[I] = #0 then begin SetLength(Result, I - 1); Break; end; end; Log(Format('Resolved path to default user profile documents folder: %s', [Result])); end; end; 

(代码是Unicode版本的Inno安装程序)。