论坛风格切换切换到宽版
  • 2898阅读
  • 4回复

关于FileExists函数的两个问题 [复制链接]

上一主题 下一主题
离线axlswd
 

发帖
95
金钱
910
威望
91
只看楼主 倒序阅读 0 发表于: 2014-05-19

1.在使用FileExists函数时发现其不支持通配符,比如:
if FileExists(ExpandConstant('{cf}\abcd\*.exe')) then ......
在abcd文件夹里面有许多exe文件,只要有一个就满足条件,不想一个个写,所以有没有什么方法能让其支持通配符?


2.请问如何在宏里面使用FileExists?想在存在exe的时候加大所需空间显示。

#ifdef FileExists(ExpandConstant('{pf}\aaa\*.exe'))
#define NeedSize "5000"
#else
#define NeedSize "500"
#endif

我这样写句法是不对的,想请教正确的写法!!

本帖提到的人: @gnatix @restools @qiuquan
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2014-05-20
var FR: TFindRec;

if FindFirst(ExpandConstant('{pf}\aaa\*.exe'), FR) then ...
离线axlswd

发帖
95
金钱
910
威望
91
只看该作者 2 发表于: 2014-05-20
回 1楼(gnatix) 的帖子
谢谢虎版,第一点解决了,对于第二点,逻辑是这样的:

开头:
//这里用宏定义
如果 FindFirst(ExpandConstant('{pf}\aaa\*.exe')) 则:
#define NeedSize "5000"
否则
#define NeedSize "500"

[Setup]
ExtraDiskSpaceRequired={#NeedSize}

[Files]

//这里用宏定义
如果 FindFirst(ExpandConstant('{pf}\aaa\*.exe')) 则:
Source: A.dll; DestDir: {app};
否则
Source: B.dll; DestDir: {app};

对于[Files]段的情况可以再[Code]段下面实现,但我主要想了解这里用宏的写法。英文不行,看不懂宏的文档,还请虎版帮写一下代码!!
本帖提到的人: @gnatix
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2014-05-21
因为你是要通过检查用户系统上的文件来确定编译脚本时的设置,估计行不通。宏只能影响编译时的操作,不能进行实际运行安装程序时的操作。

[Files] 段的问题,你可以通过 Check 参数来解决。
离线axlswd

发帖
95
金钱
910
威望
91
只看该作者 4 发表于: 2014-05-21
回 3楼(gnatix) 的帖子
gnatix:因为你是要通过检查用户系统上的文件来确定编译脚本时的设置,估计行不通。宏只能影响编译时的操作,不能进行实际运行安装程序时的操作。[Files] 段的问题,你可以通过 Check 参数来解决。 (2014-05-21 04:19) 

好的,那我在[Code]段下面写吧!!