我在名为System32\Drivers
的{{1}}文件夹中有一个sys文件(自定义sys文件)。我的应用程序仅限32位兼容,因此我的安装程序以32位模式运行。我的脚本需要查找这个sys文件是否存在。
我使用了下面帖子中解释的gpiotom.sys
函数,但它不起作用,因为它仅适用于64位应用程序:
InnoSetup (Pascal): FileExists() doesn't find every file
如果我的sys文件在32位模式下是否存在,我能找到任何方法吗?
以下是Pascal脚本语言的代码片段:
FileExists
答案 0 :(得分:1)
通常,我认为在64位模式下运行32位应用程序的安装程序没有任何问题。只需确保在必要时使用32位路径,例如:
[Setup]
DefaultDirName={pf32}\My Program
无论如何,如果你想坚持使用32位模式,你可以使用EnableFsRedirection
function来disable WOW64 file system redirection。
使用此功能,您可以实现FileExists
的替换:
function System32FileExists(FileName: string): Boolean;
var
OldState: Boolean;
begin
if IsWin64 then
begin
Log('64-bit system');
OldState := EnableFsRedirection(False);
if OldState then Log('Disabled WOW64 file system redirection');
try
Result := FileExists(FileName);
finally
EnableFsRedirection(OldState);
if OldState then Log('Resumed WOW64 file system redirection');
end;
end
else
begin
Log('32-bit system');
Result := FileExists(FileName);
end;
if Result then
Log(Format('File %s exists', [FileName]))
else
Log(Format('File %s does not exists', [FileName]));
end;