Inno setup Inno安装程序:检查C:驱动器中是否存在文件

Inno setup Inno安装程序:检查C:驱动器中是否存在文件,inno-setup,pascalscript,Inno Setup,Pascalscript,我在这里发现的一些问题/解决方案很相似,但不完全是我所需要的 我正在尝试为我为Windows创建的Python应用程序创建一个安装程序。安装程序调用另一个安装程序(openscad_installer.exe),用户可以选择在任何地方安装(即,我不知道目的地,需要能够找到它),或者根本不安装 我基本上需要检查openscad.exe文件是否存在(即是否已安装)计算机上的任何位置(在C:驱动器中)如果不存在,则需要卸载我的软件 卸载过程似乎很简单,但我不知道如何找出该文件是否存在。感谢您的帮助。在

我在这里发现的一些问题/解决方案很相似,但不完全是我所需要的

我正在尝试为我为Windows创建的Python应用程序创建一个安装程序。安装程序调用另一个安装程序(
openscad_installer.exe
),用户可以选择在任何地方安装(即,我不知道目的地,需要能够找到它),或者根本不安装

我基本上需要检查
openscad.exe
文件是否存在(即是否已安装)计算机上的任何位置(在
C:
驱动器中)
如果不存在,则需要卸载我的软件


卸载过程似乎很简单,但我不知道如何找出该文件是否存在。感谢您的帮助。

C:
drive(以及用户可能选择在其他任何地方安装软件的任何其他驱动器)中搜索文件是可行的,但可能需要很长时间

我建议您检查是否存在
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenSCAD
注册表项:

const
OpenSCADRegKey='SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenSCAD';
函数PrepareToInstall(var NeedsRestart:Boolean):字符串;
变量
结果代码:整数;
开始
Exec('OpenSCAD-xxx-Installer.exe','','',SW_SHOW,EWWAIT未过滤,
结果代码);
如果存在注册表项(HKEY\U当前用户\U 32,OpenSCADRegKey)或
RegKeyExists(HKEY\ U当前\ U用户\ U 64,OpenSCADRegKey)或
RegKeyExists(HKEY\U LOCAL\U MACHINE\U 32,OpenSCADRegKey)或
RegKeyExists(HKEY\U LOCAL\U MACHINE\U 64,OpenSCADRegKey)然后
开始
日志(“已安装OpenSCAD”);
结束
其他的
开始
日志(“未安装OpenSCAD”);
{中止安装}
结果:='未安装OpenSCAD';
出口
结束;
结束;
如果需要知道安装位置,请阅读并分析
UninstallString
值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenSCAD]
"UninstallString"="C:\\Program Files\\OpenSCAD\\Uninstall.exe"

如果您坚持搜索
openscad.exe
请使用:

函数FindFile(根路径:string;文件名:string):string;
变量
FindRec:TFindRec;
FilePath:string;
开始
日志(格式('在%s中搜索%s',[RootPath,FileName]);
如果FindFirst(根路径+'\*',FindRec),则
开始
尝试
重复
如果(FindRec.Name'.'和(FindRec.Name'.'),则
开始
FilePath:=RootPath+'\'+FindRec.Name;
如果FindRec.Attributes和文件属性目录为0,则
开始
结果:=FindFile(文件路径,文件名);
如果结果为“”,则退出;
结束
其他的
如果CompareText(FindRec.Name,FileName)=0,则
开始
日志(格式('Found%s',[FilePath]);
结果:=文件路径;
出口
结束;
结束;
直到没有FindNext(FindRec);
最后
FindClose(FindRec);
结束;
结束
其他的
开始
日志(格式('未能列出%s',[RootPath]);
结束;
结束;