带有iimg和iicon选项的WinRar存档已损坏

时间:2014-02-11 09:16:20

标签: winrar sfx

我正在尝试创建一个可自动提取(SFX)的rar存档,它将同时包含图标和图像。我正在使用以下命令行:

winrar.exe a -r0 -sfx -ibck -z"MyConfFile.conf" -iimg"MyImage.bmp" -iicon"MyIcon.ico" MyPackage.exe @"MyFileList.txt"

麻烦是 - 无法解压缩生成的.exe文件。相反,它说“存档是未知格式或损坏”。如果我只设置图标或只设置图像,那么一切都很好。但如果我同时设置两者,我就麻烦了。最奇怪的事。

1 个答案:

答案 0 :(得分:2)

SFX模块的代码+位图文件的数据+图标文件的数据+ SFX注释文件+其他数据(签名)首先写入SFX存档文件,然后压缩数据的实际存档是附加到文件。

根据RAR 5.0 archive format技术文档,归档数据之前的所有数据的最大大小必须小于1 MB。

可能的解决方案:

  • 通过缩小宽度/高度来缩小位图文件的大小。
  • 通过将颜色从真彩色减少到256色来缩小位图文件的大小。
  • 通过删除图标文件中的图标来减小图标文件的大小,因为尺寸为16x16,24x24,32x32和48x48的单个图标就足够了。一些* .ico文件包含各种尺寸的多个图标。标准尺寸中的单个图标足以用于SFX存档。甚至可以删除一些尺寸,如24x24和48x48,这样图标文件只包含一个尺寸为16x16和32x32的图标。
  • 通过使用自定义调色板将文件中的所有真彩色图标减少为只有256种颜色的图标,或者如果可能的话,减少16种颜色,缩小图标文件的大小。
  • 如果在某种程度上可以减少注释文件的大小,例如在安装之前使用通配符来删除文件,或者在SFX执行时向用户显示较短的文本。
  • 减小SFX模块的大小,例如使用UPX压缩它。

但是考虑到通过压缩SFX模块本身,位图和图标必须位于SFX模块本身的资源中,而不是单独附加。

Resource Hacker之类的工具可用于通过自己的位图替换标准位图,使用自己的图标替换标准图标以及更改对话框布局。即使不使用像UPX这样的运行时打包程序压缩SFX模块,这也会减少归档数据之前的数据总大小。

WinRAR 的版权所有者允许使用资源黑客等工具来自定义 WinRAR 的标准SFX模块之一的资源。在 WinRAR (winrar.chm)的帮助下,通过索引 GUI RAR和ZIP SFX模块(Default.SFX和Zip.SFX)的页面 tab或通过 Contents 选项卡(自解压模块的第一个条目)帮助。