2013-04-04 67 views
3

我正在使用InnoSetup为我的WPF应用程序创建安装程序。我的应用程序约为300Mo。 我已经实现了此方法来检查客户端环境是否具有MS Framework 4.0: http://www.codeproject.com/Articles/20868/NET-Framework-1-1-2-0-3-5-Installer-for-InnoSetup 此方法使用isxdl.dll。从安装程序中提取isxdl.dll需要很长时间

当我启动安装程序,它停留在这个任务(在InnoSetup调试模式)10秒:

Extracting temporary file: C:\Users\Ben\AppData\Local\Temp\is-IKJ7C.tmp\isxdl.dll 

此DLL是关于122Ko,这就是光。 我试着用较轻的应用程序(约5Mo)创建相同的安装程序(使用相同的脚本),并且安装程序运行良好(没有更多停滞时间)。

我不知道应用程序文件(应用程序的权重)如何影响此dll的加载。

+2

您是否使用'SolidCompression'? 'isdxdl.dll'是'[Files]'部分中的第一个文件吗?安装程序脚本所需的所有文件都应放置在'[Files]'部分的开头。对这些文件使用'Flags:nocompression'也是个好主意(可以和'dontcopy'一起使用) – RobeN 2013-04-04 09:55:14

+1

我使用的是SolidCompression。解决问题后解决。非常感谢 ! – Ben 2013-04-04 10:28:28

回答

4

安装脚本将使用的动作&函数的所有文件都应放置在[Files]部分的开头部分,尤其是在使用SolidCompression=True时。对他们来说,使用Flags: nocompression dontcopy也是不错的选择。

[Files] 
Source: ".\ISWin7.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression 
Source: ".\games\{#BMPDir}\BMP\*"; DestDir: "{tmp}"; Flags: dontcopy nocompression 
Source: ".\InnoCallback.dll"; DestDir: "{tmp}"; Flags: dontcopy nocompression 
Source: ".\MyAppSourceFiles\*"; DestDir: "{app}"; Flags: ignoreversion 

使用固体压缩的缺点是,因为所有的文件 被压缩成一个单一的压缩流,安装程序可以不再 随机访问,它使得将这些文件

  • “解压缩所有文件”,然后才能访问最后一个文件。更多信息here
相关问题