Inno Setup问题:如何确保Program Files目录下文件非只读?
解决Inno Setup安装后文件/文件夹只读问题
先处理源文件的只读属性
检查本地Bundled_Files目录下的文件本身是否带有只读属性。如果源文件默认是只读的,Inno Setup会保留这个属性,仅设置权限无法让文件变为可写。可以手动选中所有文件,右键→属性→取消「只读」勾选;也可以用批处理批量清除:attrib -r "Bundled_Files\*" /s /d在[Files]段添加属性移除参数
在现有[Files]配置中加入Attribs: -r,强制移除文件的只读属性,同时保留权限设置:[Files] Source: "Bundled_Files\*"; DestDir: "{commonpf64}\StudioLinked\Romplur\"; Flags: ignoreversion recursesubdirs createallsubdirs; Permissions: users-full; Attribs: -r;这里
-r表示移除只读属性,若需设置其他属性(如隐藏)可搭配+h,多个属性用空格分隔。处理文件夹的只读标记(可选)
Windows 10中文件夹的「只读」属性是特殊标记,主要影响子文件而非文件夹本身。若需彻底清除该标记,可在[Code]段添加安装后执行的脚本:[Code] procedure CurStepChanged(CurStep: TSetupStep); var TargetDir: string; begin if CurStep = ssPostInstall then begin TargetDir := ExpandConstant('{commonpf64}\StudioLinked\Romplur\'); SetFileAttributes(TargetDir, GetFileAttributes(TargetDir) and not FILE_ATTRIBUTE_READONLY); end; end;这段代码会在安装完成后修改目标文件夹属性,移除只读标记。
明确权限与属性的区别
Permissions: users-full是赋予用户读写权限,而「只读属性」是文件本身的修改限制——二者是独立设置,需同时处理才能确保文件可写。
内容的提问来源于stack exchange,提问作者hSetlik
相关产品推荐
相关产品推荐

