2

我正在尝试创建一个可自解压 (SFX) 的 rar 存档,其中包含图标和图像。我正在使用以下命令行:

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

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

4

1 回答 1

2

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

根据RAR 5.0 存档格式技术说明文档,存档数据之前的所有数据的最大大小目前必须小于 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的版权所有者允许使用Resource Hacker等工具自定义WinRAR的标准 SFX 模块之一的资源。在WinRAR (winrar.chm) 的帮助中查看标题为GUI RAR 和 ZIP SFX 模块(Default.SFX 和 Zip.SFX)的页面,通过索引选项卡或通过帮助的目录选项卡(自解压模块的第一个条目)。

于 2014-07-25T12:35:57.923 回答