gpt4 book ai didi

inno-setup - Inno Setup 不会在 C :\Users\Public - will instead do C:\Users\Public\Public Documents 下创建文件夹

转载 作者:行者123 更新时间:2023-12-03 08:29:25 32 4
gpt4 key购买 nike

我正在使用 Inno Setup 来构建我的安装程序,我有 C:\Users\Public文件夹硬编码在我的 [Files] 中放置一些文件的部分(Inno Setup 没有此文件夹的常量)

我的目标是让安装创建一个 C:\Users\Public\MyApp包含一些文件的文件夹。但是,当我运行安装时,它会在此处创建文件夹:C:\Users\Public\Public Documents\MyApp
这是安装程序无权直接在 C:\Users\Public 下创建文件夹的权限问题吗? ?

[Files]
Source: "MyApp\db.mdf"; DestDir: "{drive:{src}}\Users\Public\MyApp"; Flags: ignoreversion;

最佳答案

我无法重现您的问题。对我来说,你的代码有效。我已经在 Windows Vista、7 和 10 上测试过它。它总是安装到 C:\Users\Public\MyApp .

虽然我不明白{drive:{src}} . Users的驱动如何文件夹与安装程序的驱动器有关?您应该使用 {sd} constant :

[Files]
Source: "MyApp\db.mdf"; DestDir: "{sd}\Users\Public\MyApp"; Flags: ignoreversion

但无论如何,要解析到 C:\Users\Public的路径,您可以使用 PUBLIC环境变量:
[Files]
Source: "MyApp\db.mdf"; DestDir: "{%PUBLIC}\MyApp"; Flags: ignoreversion

它从 Windows Vista 开始工作。

或者,您可以使用 SHGetKnownFolderPath FOLDERID_Public .示例代码见 Constant for AppData\LocalLow?

如果你甚至需要支持Windows XP,这里没有 C:\Users\Public文件夹或 PUBLIC变量,你必须找出你需要在那里使用的路径(可能是 C:\Documents and Settings\All Users ),并使用脚本常量实现回退:

[Files]
Source: "MyProg.exe"; DestDir: "{code:GetPublicPath}\MyApp"; Flags: ignoreversion

[Code]

function GetPublicPath(Param: string): string;
begin
Result := GetEnv('PUBLIC');
if Result <> '' then
begin
Log(Format('PUBLIC is "%s"', [Result]));
end
else
begin
Result := GetEnv('ALLUSERSPROFILE');
Log(Format('PUBLIC is not set, ALLUSERSPROFILE is "%s"', [Result]));
end;
end;

对于其他人,值得注意的是您需要解决 C:\Users\Public非常具体,与这个问题有关: C++ app MDB in ProgramData copies to user's AppData folder when I dont want it to .

一个通常不想要的 C:\Users\Public ,但是 C:\Users\Public\Documents (= {commondocs} ) 或 C:\ProgramData又名 C:\Users\All Users (= {commonappdata} )。

关于inno-setup - Inno Setup 不会在 C :\Users\Public - will instead do C:\Users\Public\Public Documents 下创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354238/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com