Inno setup Inno安装程序:检查32位System32(Sysnative)文件夹中是否存在文件

Inno setup Inno安装程序:检查32位System32(Sysnative)文件夹中是否存在文件,inno-setup,pascalscript,Inno Setup,Pascalscript,我在System32\Drivers文件夹中有一个sys文件,名为gpiotom.sys(自定义sys文件)。我的应用程序仅与32位严格兼容,因此我的安装程序以32位模式运行。我的脚本需要找到这个sys文件是否存在 我使用了下面文章中解释的FileExists函数,但它不起作用,因为它只适用于64位应用程序: 是否有任何方法可以找到我的sys文件是否以32位模式存在 以下是我用Pascal脚本语言编写的代码片段: 函数存在():布尔值; 开始 结果:=假; 如果文件存在(“{sys}\driv

我在
System32\Drivers
文件夹中有一个sys文件,名为
gpiotom.sys
(自定义sys文件)。我的应用程序仅与32位严格兼容,因此我的安装程序以32位模式运行。我的脚本需要找到这个sys文件是否存在

我使用了下面文章中解释的
FileExists
函数,但它不起作用,因为它只适用于64位应用程序:

是否有任何方法可以找到我的sys文件是否以32位模式存在

以下是我用Pascal脚本语言编写的代码片段:

函数存在():布尔值;
开始
结果:=假;
如果文件存在(“{sys}\driver\gpiotom.sys”),则
开始
日志('文件存在');
结果:=真;
结束;
结束;

一般来说,我认为在64位模式下运行32位应用程序的安装程序不会有任何问题。只需确保在必要时使用32位路径,如:

[Setup]
DefaultDirName={pf32}\My Program

无论如何,如果您想继续使用32位模式,可以使用

使用此功能,您可以替换
FileExists

函数System32FileExists(文件名:string):布尔值;
变量
OldState:布尔型;
开始
如果是Win64,那么
开始
日志(“64位系统”);
OldState:=EnableFsRedirection(False);
如果为OldState,则记录('Disabled WOW64 filesystem redirection');
尝试
结果:=文件存在(文件名);
最后
EnableFsRedirection(旧状态);
如果为OldState,则记录('恢复WOW64文件系统重定向');
结束;
结束
其他的
开始
日志(“32位系统”);
结果:=文件存在(文件名);
结束;
如果结果是这样的话
日志(格式('文件%s存在',[FileName]))
其他的
日志(格式('文件%s不存在',[文件名]);
结束;

什么是“不起作用”?你试过什么?安装失败的日志是什么?你有一个最小的、完整的、可验证的例子吗?具体是什么“sys文件”?32位或64位文件?+“64位应用模式”-什么应用程序?-这真的是XP特有的问题吗?在更高版本的Windows上,您真的没有同样的问题吗?您好,在这个名为gpiotom.sys的文件夹中有一个自定义的gpio sys,我必须在安装程序中找到它。我已经尝试了上述帖子中提到的选项。但它只能在64位模式的应用程序中找到sys文件,但我的应用程序严格地处于32位模式。FileExists()函数不适用于检测32位应用程序中的sys文件。有没有其他方法可以找到它们?为什么不更新你的问题并提供日志呢。