论坛风格切换切换到宽版
  • 5068阅读
  • 2回复

使用ExtractTemporaryFile遇到的一个问题 [复制链接]

上一主题 下一主题
离线axlswd
 

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

[Setup]
AppName=我的程序
AppVerName=我的程序 版本 1.5
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序
[Files]
Source: "compiler:\Examples\MyProg.exe"; DestDir: "{app}"
Source: "1\a.bmp"; DestDir: "{app}"; check:Iswin64;
Source: "2\a.bmp"; DestDir: "{app}"; check:not Iswin64;
[code]
procedure InitializeWizard;
begin
ExtractTemporaryFile('a.bmp');
//............................................
end;

上述代码,1号文件夹和2号文件夹里面的bmp文件,名称相同,内容不同!现在遇到一个棘手的问题:
我需要在不同的系统下面用ExtractTemporaryFile提取不同的bmp文件,因为特殊原因bmp文件名称不能改变
但是用上面的方法无论如何只能提取1号文件夹里面的bmp文件。(猜想是因为名称一样所以取第一个,而且check只是控制了安装)
请教虎版如何根据不同条件,提取文件名称相同但内容不同的文件?



本帖提到的人: @gnatix
离线axlswd

发帖
95
金钱
910
威望
91
只看该作者 2 发表于: 2014-05-27
回 1楼(gnatix) 的帖子
gnatix:[Files]Source: "a1.bmp"; Flags: dontcopySource: "a2.bmp"; Flags: dontcopy....... (2014-05-27 03:56) 

老虎版主实在是太强大了,很多难题在你这里都能简单化解,真心佩服!!
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2014-05-27
[Files]
Source: "a1.bmp"; Flags: dontcopy
Source: "a2.bmp"; Flags: dontcopy

[code]
procedure InitializeWizard;
begin
if IsWin64 then
  begin
    ExtractTemporaryFile('a1.bmp');
    RenameFile(ExpandConstant('{tmp}\a1.bmp'), ExpandConstant('{tmp}\a.bmp'));
  end
else
  begin
    ExtractTemporaryFile('a2.bmp');
    RenameFile(ExpandConstant('{tmp}\a2.bmp'), ExpandConstant('{tmp}\a.bmp'));
  end
end;