2013-05-13 52 views
4

我的安装脚本中包含嵌入式7Zip archive
有没有“内容”的方式提取内容到目标文件夹?
如果没有关于如何实现这一点的提示?如何在安装过程中将嵌入式存档提取到磁盘

更新了我的实施。感谢提示TLama

[Files]  
Source: "Documentation.7zip"; DestDir: "{tmp}"  
Source: "7za.exe"; DestDir: "{tmp}" 

[Run] 
Filename: "{tmp}\7za.exe"; Parameters: "x -o""{app}"" ""{tmp}\Documentation.7zip""";  Flags: runhidden; Description: "{cm:InstallingDocumentation}"; StatusMsg: "{cm:InstallingDocumentationStatus}" 

[CustomMessages] 
en.InstallingDocumentation=Documentation Files 
en.InstallingDocumentationStatus=Installing Documentation Files. This may take several minutes... 

回答

4

不,没有本地方式从InnoSetup安装程序中提取7zip文件。但是,您可以获得7zip库的副本,which is redistributable并从InnoSetup脚本的代码部分调用它。

+0

感谢您的提示。看到我更新的答案。 – 2013-05-13 12:02:11

+0

不客气!虽然我正在考虑7z.dll并将其导入InnoSetup脚本代码,但这也可能起作用。如果我有时间,我会把进口翻译成InnoSetup,但我现在真的很忙... – TLama 2013-05-13 12:05:37

+0

你认为它更有效的进口和脚本? – 2013-05-13 12:10:45

3

Inno没有任何本地方法从其他任何文件中提取文件(通常压缩比7Zip更好)。然而

Inno Setup的可以使用通配符,包括文件进行安装:

[Files] 
Source: "Documentation\*.*"; DestDir: "{app}/Documentation/"; 

如果你有许多小文件,使用solidcompression标志将提高压缩性能和尺寸。

+0

我认为这个问题会问如何在安装过程中提取包中包含的独立7zip文件(可能由第三方供应商分配为7zip)。虽然拆包并包括包装可能是解决方法。 [+1] – TLama 2013-05-13 11:35:47

+0

这是原来的代码。但是文档中有超过5000个文件。并且在编译器运行期间添加它们是非常低效的。 – 2013-05-13 11:58:08

+0

@TobiasR查看我对“solidcompression”的评论。 – Deanna 2013-05-13 11:59:16