gpt4 book ai didi

inno-setup - Inno Setup Code 部分创建隐藏文件

转载 作者:行者123 更新时间:2023-12-01 23:58:05 25 4
gpt4 key购买 nike

我正在使用 Inno Setup 项目。该项目正在使用 SaveStringToFile 写出一个文件[Code] 中的函数部分。我想让这个文件成为一个隐藏的系统文件,但我一直无法找到有关如何进行这项工作的信息。有任何想法吗?

最佳答案

Inno Setup Pascal Script 中没有设置文件属性的功能。因此,您要么必须导入可以设置文件属性的 Windows API 函数,要么使用以下技巧。您可以创建一个空文件,将其设置为隐藏在脚本条目中,然后您可以在其中编写您需要的任何内容,因此安装过程将为您创建一个隐藏文件:

[Files]
; MyFile.txt is an empty text file
Source: "MyFile.txt"; DestDir: "{app}"; Attribs: hidden; AfterInstall: WriteToFile
[Code]
procedure WriteToFile;
begin
SaveStringToFile(ExpandConstant('{app}\MyFile.txt'), 'Hello!', True);
end;
为了完整起见,我还包括一个函数,您可以通过该函数将隐藏属性显式设置为文件:
[Code]
#ifdef UNICODE
#define AW "W"
#else
#define AW "A"
#endif

const
INVALID_FILE_ATTRIBUTES = $FFFFFFFF;

function GetFileAttributes(lpFileName: string): DWORD;
external 'GetFileAttributes{#AW}@kernel32.dll stdcall';
function SetFileAttributes(lpFileName: string; dwFileAttributes: DWORD): BOOL;
external 'SetFileAttributes{#AW}@kernel32.dll stdcall';

procedure RaiseLastOSError;
var
LastError: LongInt;
begin
LastError := DLLGetLastError;
RaiseException(Format('System Error. Code: %d. %s', [LastError,
SysErrorMessage(LastError)]));
end;

procedure SetFileHiddenAttr(const FileName: string);
var
Attrs: DWORD;
begin
Attrs := GetFileAttributes(FileName);
if Attrs <> INVALID_FILE_ATTRIBUTES then
begin
if Attrs and FILE_ATTRIBUTE_HIDDEN = 0 then
if not SetFileAttributes(FileName, Attrs or FILE_ATTRIBUTE_HIDDEN) then
RaiseLastOSError;
end
else
RaiseLastOSError;
end;

关于inno-setup - Inno Setup Code 部分创建隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696436/

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