gpt4 book ai didi

windows - Inno Setup - 在 Windows 10 的公共(public)用户文档中创建文件夹

转载 作者:行者123 更新时间:2023-12-03 11:10:35 25 4
gpt4 key购买 nike

我正在尝试将一个文件夹添加到最终将保存用户输出数据的安装中。我无法将文件夹放入 Program Files 中,因为用户没有写入该文件夹所需的权限。

如果没有安装到Program Files ,然后可以在应用程序文件夹中创建数据文件夹(这工作正常)。

我有一小段代码来检测是否对 Program Files 进行了安装,如果是,我想使用 CreateDir()C:\Users\Public\Documents\{'MyAppName}\DB 中创建一个数据文件夹这似乎失败了,在 [Code]即使标准的 Inno Setup 脚本有效:

[Dirs]
Name: "{commondocs}\{#MyAppName}\DB"

我正在使用 DeinitialiseSetup()一旦路径确定,在安装结束时执行此操作的过程。

这是我的代码:

[Code]
procedure DeinitializeSetup();
begin
{ If it has been installed in the Program Files Folder put DB in Public Documents }
if Pos(ExpandConstant('{pf}'),ExpandConstant('{app}')) > 0 then
begin
if not CreateDir (ExpandConstant('{commondocs}\{#MyAppName}\DB')) then
MsgBox('Error: Data folder could not be created.', mbInformation, MB_OK);
end
else
begin
if not CreateDir (ExpandConstant('{app}\DB')) then
MsgBox('Error: Data folder could not be created.', mbCriticalError, MB_OK);
end;
end;

按照我使用的另一个 SO 建议:
PrivilegesRequired=lowest

在脚本中,但不管有没有这个,它都不起作用。我开始认为这可能是权限问题,但不知道为什么,作为安装程序标准 [Dirs]脚本工作正常。

这与其他关于识别路径的问题不同 - 我得到了所有我想要的路径,只有: [Code] CreateDir()似乎无法在 {commondocs} 中创建文件夹.

非常感谢您的任何建议。

最佳答案

我的猜测是 {commondocs}\{#MyAppName}不存在。 CreateDir function只能创建一个目录。如果父文件夹不存在,它不会为您创建父文件夹(与 [Dirs] 部分条目相反)。

您可以使用 ForceDirectories function反而:

Creates all the directories along the specified directory path all at once.



旁注:请勿使用 DeinitializeSetup创建目录 – 即使安装失败或用户取消安装也会触发。

使用 CurStepChanged(ssPostInstall) :

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
{ Your code }
end;
end;

关于windows - Inno Setup - 在 Windows 10 的公共(public)用户文档中创建文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054275/

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