3
inno 설치 프로젝트로 작업하고 있습니다. 프로젝트는 [코드] 섹션의 SaveStringToFile 함수를 사용하여 파일을 쓰고 있습니다. 이 파일을 숨겨진 시스템 파일로 만들고 싶습니다. 그러나이 작업을 수행하는 방법에 대한 정보를 찾을 수 없었습니다. 어떤 아이디어?Inno Setup 코드 섹션에서 숨김 파일을 만듭니다.
inno 설치 프로젝트로 작업하고 있습니다. 프로젝트는 [코드] 섹션의 SaveStringToFile 함수를 사용하여 파일을 쓰고 있습니다. 이 파일을 숨겨진 시스템 파일로 만들고 싶습니다. 그러나이 작업을 수행하는 방법에 대한 정보를 찾을 수 없었습니다. 어떤 아이디어?Inno Setup 코드 섹션에서 숨김 파일을 만듭니다.
Inno Setup Pascal Script에서 파일 속성을 설정하는 기능은 없습니다. 따라서 파일 속성을 설정하거나 다음 트릭을 사용할 수있는 Windows API 함수를 가져와야합니다. 스크립트 항목에서 숨겨 지도록 설정 한 빈 파일을 만들면 그곳에서 필요한 파일을 쓸 수 있으므로 숨겨진 파일을 생성하는 설치 프로세스가됩니다.
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[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;
나는 또한 명시 적으로 파일을 숨김 속성을 설정할 수있는 기능을 포함하고있어 completness을 위해서
는 :
[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;
이 완벽합니다. 이런 식으로 생각했지만 모든 물류를 파악할 수는 없었습니다. AfterInstall은 내가 필요한 것입니다. 나는이 파일이 제거 프로세스에 의해서도 처리되기 때문에 정말 좋아한다. 감사! – thecaptain0220
당신을 진심으로 환영합니다! 명시 적으로 숨겨진 속성을 파일에 포함 할 수있는 함수도 추가했습니다. 하지만 필자는 언급 한 것처럼 파일이 제거 프로그램에 포함되어 있기 때문에 개인적으로 첫 번째 옵션을 선호합니다. – TLama