首页 > 代码库 > WinRAR的自解压模式 - imsoft.cnblogs

WinRAR的自解压模式 - imsoft.cnblogs

一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块。这样的压缩文件不需要外部程序来解压自解压文件的内容,它自己便可以运行该项操作。然而 WinRAR 仍然可将自解压文件当成是任何其它的压缩文件处理。所以如果你不愿意运行所收到的自解压文件 (比如说,它可能含有病毒时),你可以使用 WinRAR 来查看或是解压它的内容。

自解压文件通常与其它的可执行文件一样都有 .exe 的扩展名。

  自解压文件是很方便的,如果你想要将压缩文件给某一个人时,但却不知道他们是否有该压缩程序可以解压文件的时候。你也可以使用自解压来发布你自己的软件,例如 WinRAR 的安装程序便是使用图形 GUI RAR 自解压模块 Default.sfx 所制作的。

  要从命令行创建自解压文件,你可以使用 -sfx 开关来制作新的压缩文件,或是 S 来将已存在的压缩文件转换成自解压文件。 在 WinRAR 图形界面则有两种方式,一个是当要创建新的压缩文件时,从压缩文件名和参数对话框选择“创建自解压文件”选项,另一个是输入已存在的压缩文件并单击 “自解压”按钮。

  WinRAR 中包含了数个自解压模块,全部的自解压模块都有 .sfx 扩展名并且必须放在 WinRAR 所在的文件夹中。默认的 WinRAR 始终使用 Default.sfx 模块,但是你也可以直接以“-sfx”开关或是“S”命令来直接指定其它的模块名。例如,转换 myarchive.rar 成为自解压格式,使用 WinCon.SFX 模块运行:

WinRAR SWinCon.SFX myarchive.rar

  在 WinRAR 图形界面下,你可在菜单中选择你想要用的自解压模块,在当你运行“转换到自解压文件”命令时,它就会出现让你选择。

 

㈠、图形界面 RAR 和 ZIP 自解压模块(Default.SFX 和 Zip.SFX)

 

  使用这两种模块你可以创建 GUI (图形模式) 自解压文件 的 32 位 Windows 版本(Windows 95,98,NT 等等 ),这些模块无法在 Windows 3.1 或 DOS 下运行。使用 Default.SFX 模块于 RAR 压缩文件 以及 Zip.SFX 给 ZIP 压缩文件。

 

  在自解压模块包含的 Windows 资源是允许修改成你所需要的样子的。例如,你可以在起始对话框中显示你希望的位图。WinRAR 并不提供修改资源的工具或文档。这是个很复杂的过程,如果你要如此做,你必须有资源编辑器,并知道要怎样使用它们。但如果标准的自解压对话框即可满足你的话,你就不需要再修改资源了。

  在自解压模块包含的 Windows 资源是允许修改成你所需要的样子的。例如,你可以在起始对话框中显示你希望的位图。WinRAR 并不提供修改资源的工具或文档。这是个很复杂的过程,如果你要如此做,你必须有资源编辑器,并知道要怎样使用它们。但如果标准的自解压对话框即可满足你的话,你就不需要再修改资源了。如果你仅仅要改变自解压的位图或图标,你可以使用高级自解压选项对话框中的“文本和图标”。

 

说明:WinRAR 默认创建的是 RAR 自解压文件,所以在“模块”中只能看到 RAR 自解压模块。如果要创建 ZIP 自解压文件,则需要在“压缩文件格式”中选择为 ZIP 。然后,在“模块”中就可以看到 ZIP 自解压模块了。

 

1,图形界面自解压模块: 命令行选项

 

选项 描述 -d<路径> 设置解压文件的目标路径。 -p<密码> 指定加密的自解压压缩文件的密码。

-s, -s1, -s2

缄默模式。开关 -s 是 -s1 的简明形式。-s 和 -s1 都隐藏 SFX 对话框和解压进程。-s2 隐藏启动对话框,但是显示解压进程。 -sp<par> 定义传递给在 Setup 命令中指定的应用程序的参数。

 

2,图形界面自解压模块: 安装命令(自解压脚本命令)

 

Setup

命令命令

语法

叙述

Delete Delete=<文件名> 解压前先删除文件 License License=<许可协议对话框标题 > 显示程序的许可协议 Overwrite Overwrite=[n] 选择文件的覆盖模式 Path Path 设置默认目标路径 Presetup Presetup=<程序> 指定解压前运行的程序 SavePath SavePath 存储目标路径 Setup Setup=<程序> 指定解压后运行的程序 Shortcut shortcut=<目标类型 >,<源名>,<目标文件夹 >,<描述>,<快捷方式名 > 创建解压文件的快捷方式 Silent Silent[=参数] 跳过开始时的对话框 TempMode TempMode=[问题叙述 ][@窗口标题文本 ] 解压压缩文件到临时文件夹 Text Text=<字符串> 添加文本到自解压对话框文本窗口 Title Title=<标题> 设置自解压对话框标题

 

3,“高级自解压选项”对话框

  对话框可通过从把压缩文件转换成自解压格式命令,然后单击“高级自解压选项”按钮启动。它允许指定一些自解压压缩文件的参数,如默认目标路径,窗口标题和文本。它会使用在 Windows 自解压模块专门主题所描述的自解压脚本命令,自动生成脚本。因此你不需要学习脚本语言和自己输入命令,只需要设置想要的选项即可。

  请注意这些自解压参数仅能够应用在 Windows 图形界面模块,而不支持控制台或非 Windows 自解压程序。

  此对话框的自解压参数被结合成一个子对话框,描述如下 :  

 

⑴,自解压选项: 常规

 

解压路径

设置要解压文件的默认目标路径。你可以选择要将它创建在用户的“Program Files”文件夹,或当前文件夹,或在此指定一个绝对路径。前两种情况不需要包含驱动器号或前缀的“\”反斜线字符,而第三个则必须要有。

相应的 自解压脚本 命令 - Path

 

Path=<路径>

设置默认的目标路径。路径的绝对使用起始点在不更改的情况下为 <驱动器号>:,如果 <路径> 只包含了名称,它将会被附加到“Program Files”文件夹下,如果你希望关闭如此的作用,请从“.\”字符开始定义起始 <路径 >

例子:

a) 设置“Calc 3.05 beta”为文件夹名,位置在“Program Files”下,当成默认路径:

Path=Calc 3.05 beta

b) 设置“C:\Calc”当作默认路径:

Path=C:\Calc

c) 设置“Calc”在根目录下当作默认路径:

Path=.\Calc

 

解压路径/保存并恢复路径

这个选项允许自解压程序在注册表中存储用户输入的目标路径,并在自解压文件下一次运行时恢复相同的解压路径。原来的路径值被放在输入目标路径区域的列表下拉菜单中,所以用户可以在以前输入的和原始路径中选择。

当安装新版本或更新一些软件到同样的目录时,这个功能可能很便利。它允许只改变一次目标路径,而不需要每次都输入。

这只可以用在非空的解压路径区域的组合框中。

相应的 SFX 脚本 命令 - SavePath

 

SavePath

这个命令允许自解压程序在注册表中存储用户输入的目标路径,并在自解压文件下一次运行时恢复相同的 Path。原来的 Path 命令内容被放在输入目标路径区域的列表下拉菜单中,所以用户可以在以前输入的和原始路径中选择。

当安装新版本或更新一些软件到同样的目录时,这个功能可能很便利。它允许只改变一次目标路径,而不需要每次都输入。

SavePath 命令只能和 Path 命令一起使用一次。

例子:

Path=Calc 3.05

SavePath

 

安装程序/解压后运行

自解压程序在成功解压之后,将试着运行指定的程序。含有解压文件的文件夹,在运行程序之前会被设为当前文件夹。如果程序名包含空格,则它必须使用引号。

相应的 自解压脚本 命令 - Setup

 

Setup=<程序>

在成功解压之后自解压将会试着运行 <程序>。在运行 <程序> 之前,包含已解压文件的文件夹将会设为当前文件夹

例子:

Setup=setup.exe

注意

1) 如果你在使用自解压运行 InstallShield setup.exe 有问题的话,请试着运行 “Setup.exe /SMS”来代替简洁的“Setup.exe”。此开关允许自解压检测安装程序的退出。

2) 你可以使用 -sp<参数> 自解压命令行开关 传递可选的参数到 Setup=<程序> 命令指定的程序。

3) 自解压模块在启动安装程序前设置 sfxnamesfxcmd 环境变量。sfxname 变量包含自解压模块的名字,sfxcmd 变量包含自解压模块接收的完整命令行。所以安装程序可以在需要这样的信息时读取它。安装程序如果需要这些信息可以读取它们。

 

安装程序/解压前运行

在开始解压之前,自解压程序会试着运行指定的程序,在运行程序前,目标目录会被设为当前文件夹。如果程序名包含空格,则它必须使用引号。例如,当安装新版要覆盖旧版时,要删除旧版程序的时候,你便可以指定该命令。

相应的 自解压脚本 命令 - Presetup

 

Presetup=<程序>

自解压在解压之前将试着运行 <程序>,在运行 <程序> 之前必须先指定目标文件夹。你可以使用此命令,比如说,当安装新版本于旧版本上面时,用以删除先前的程序版本。如果程序名包含空格,它必须包含在引号之内。

例子:

Presetup=uninstall.exe /clean

 

保存当前设置当成默认值

保存所有在 “高级自解压选项”对话框 内所做的和当前的设置,并在以后每次创建 自解压 压缩文件时,以它们当作默认值。

 

⑵,自解压选项: 高级

 

-目标文件夹中要删除的文件

解压前,自解压程序会试着删除所指定的文件或在目标文件夹内的文件。你可以在此输入超过一个以上的文件,要如此做时,文件名之间必须以空格分隔。

如果在此指定的文件被锁定而无法删除,自解压模块在解压前会试着将它临时重命名,并在 Windows 重新启动时删除它,这能不能成功则取决于 Windows 版本的差异。

相应的 自解压脚本 命令 - Delete

 

Delete=<文件名>

在解压到目标文件夹之前删除指定的文件,允许数个 Delete 命令。

如果在此指定的文件被锁定而无法删除,自解压模块在解压前会试着将它临时重命名,并在 Windows 重新启动时删除它,这能不能成功则取决于 Windows 版本的差异。

例子:

Delete=winrar95.exe

Delete=rarlng.dll

 

- 快捷方式

允许解压后为被压缩文件创建快捷方式。按下“添加快捷方式”按钮来描述一个新的快捷方式。已经输入的快捷方式参数被存储在和快捷方式脚本命令格式相同的列表下。如果你愿意的话,你可以手动编辑它。

相应的 自解压脚本 命令 - Shortcut

 

shortcut=<目标类型 >,<源名>,<目标文件夹 >,<描述>,<快捷方式名 >

为解压的文件常见一个快捷方式。

目标类型 是一个一个字符宽的区域,可以有下列值:

D 在桌面创建快捷方式 S 在开始菜单创建快捷方式 P 在开始菜单/ 程序中创建快捷方式 T 在启动菜单中创建快捷方式

源名 是压缩文件名。

目标文件夹是创建快捷方式的文件夹,如果它不存在,它将被自解压文件创建。

描述 是描述快捷方式的字符串。

快捷方式名 是由自解压创建的 .lnk (快捷方式 )文件的文件名。

所有参数用逗号分隔。如果你需要添加逗号字符在参数内,镶入整个参数引用。如果你需要在字符串中插入一个引用标记,要输入两次引号。只有 目标类型源名是必需的,其它参数可选。

例子

在桌面创建在 WinRAR 文件夹中连接到 winrar.exe 的快捷方式,带有“WinRAR 可执行文件”的描述和“WinRAR 压缩文件管理器”的名称:

Shortcut=D,winrar.exe,WinRAR,“WinRAR 可执行文件”,“WinRAR 压缩文件管理器”

 

⑶,自解压选项: 模式

 

-临时模式/解压文件到临时文件夹

此选项强制自解压程序创建一个临时文件夹,然后将所有文件解压缩到这个文件夹中,开始运行在 安装程序/解压后运行 区域所指定的程序,并在 安装 程序完成后删除临时文件夹中的所有内容。当运行这些操作时,自解压程序会自动设置为缄默模式 (下面说明)。如果设置“解压压缩文件到临时文件夹”,你也可同时指定 安装 程序且不使用 解压路径 区域。你还可以设置两种可选的字符串参数,即定义问题和解压缩前显示问题的标题。此类型的例子下仅在用户选择“是”按钮时才会开始解压缩。

相应的 自解压脚本 命令 - TempMode

 

TempMode=[问题叙述 ][@窗口标题文本 ]

此命令强制自解压创建一个临时目录,将全部文件解压至此,然后开始运行 Setup 命令所指定的程序,并在完成 Setup 程序之后将临时目录中的内容全部清除。当运行这些操作时,自解压会自动设置为 缄默模式。如果 TempMode 命令存在的话,叙述中将有 Setup 命令且不得使用 path 命令。

TempMode 命令可以有字符串参数的选项,在解压之前可用以定义问题和问题的标题。这样的例子,仅在当用户选择了“是” 按钮时才会开始解压。

例子:

a) TempMode

b) TempMode=你希望继续安装 Calculator 3.05 吗? Calculator 安装程序

 

-缄默模式

默认自解压在开始解压缩前会先询问确认,并允许用户更改目标文件夹。如果你设置“缄默模式”的“隐藏启动时的对话框”,这时会跳过确认画面。如果你也希望隐藏解压缩过程的话,请选择“全部隐藏”。

相应的 自解压脚本 命令 - Silent

 

Silent[=参数]

开始解压时不显示开始对话框。

参数 可以是 1 或 2。如果 参数 是 1,开始解压对话框会完全隐藏,包含进程指示和文件名。如果 参数 被忽略或是 2,则跳过开始解压的确认,但用户仍然可以看到压缩文件的解压进程。

例子:

Silent=2

 

-覆盖模式

在此你可以选择让自解压程序如何操作你已存在的文件 : 覆盖之前询问 (默认值 )、永远覆盖或永远跳过。

相应的 自解压脚本 命令 - Overwrite

 

Overwrite=[n]

如果[n]为 0,在覆盖文件之前用户将会被先询问。这是 覆盖命令的默认动作,可以不需要指定。如果 [n]不存在或是等于[1],文件将在没有确认的状况下全部覆盖。如果 [n]等于[2],所有已存在的文件将不会被覆盖。

例子:

Overwrite=1

 

⑷,自解压选项: 文本和图标

 

-自解压窗口标题

设置指定的文本作为自解压窗口的标题。

相应的 自解压脚本 命令 - Title

 

Title=<标题>

设置自解压的窗口标题。

例子:

Title==Calculator,版本 3.05

 

-自解压窗口显示的文本

添加在自解压模块的文本输出窗口中指定的纯文本或 HTML 字符串。

对于纯文本,为了使字符串和对话框匹配,自解压模块将合并和重新格式化指定的字符串。所以如果你希望重新生成一个新的段落,你需要在它前面放一个空的字符串。

你可以使用 HTML 来控制颜色,字体和显示的格式。 HTML 语法的描述可以在 The World Wide Web Consortium 站点找到。也可以使用网页编辑程序来产生 HTML 文本。

相应的 自解压脚本 命令 - Text

 

此命令支持两种语法版本:

a)

Text=<字符串>

b)

Text

{

字符串 1

字符串 2

...

}

它在自解压模块的输出窗口添加指定纯文本或 HTML字符串。当自解压模块第一次遇到 Text 命令,在添加<字符串 >前,它重设这个窗口默认内容。其后的命令追加 <字符串>到已经存在的文本后。

依赖于使用的语法,这个命令可以一次添加一个或者数个字符串。

对于纯文本的过程中,为了使字符串和对话框匹配,自解压模块将合并和重新格式化指定的字符串。所以如果你希望重新产生一个新的段落,你需要在它前面放一个空的字符串。

你可以使用 HTML 来控制颜色,字体和显示的格式。 HTML 语法的描述可以在 The World Wide Web Consortium 站点找到。也可以使用网页编辑程序来产生 HTML 文本。

如果文本由数个字符串组成,自解压模块把‘ }’字符作为文本的结束标记,所以你在你的文本的字符串的首个位置不应该使用此字符。如果你需要在字符串的开头使用‘ }’字符,在它前面插入空格。

例子:

a) 添加单个字符串到对话框窗口

Text=这是我的新程序

b) 添加指定文本到对话框窗口“Text

{

此程序最有趣的特性是:

- 支持 Windows 剪贴板;

- 每一个处理的文件大小最大为 10KB;

}

 

从文件加载文本

加载选择文件的内容作为子解压窗口文本。

 

从文件加载自解压图片

指定位图图像 (*.bmp) 文件用于创建或更新自解压压缩文件。

 

- 从文件加载自解压文件图标

使用目标 .ico 文件替换默认的自解压文件包含的图标。这个文件必须至少包含一个 32x32 图标,16 或 256 色(或全有)图标。推荐不需要包含16x16图标。大小超过 32x32 和颜色数超过 256 色的图标仅被基于 NT 的 Windows (NT, 2000, XP, 2003 等)支持,Windows 95, 98 和 Me 不支持。如果你要使用大的图标大小和压缩深度,则你不能使用任何第三方可执行文件压缩程序压缩自解压模块。

 

⑸,自解压选项: 许可

 

- 许可窗口标题

设置指定的文本作为许可窗口标题。

 

-许可文本

当运行自解压文件时显示指定的作为软件许可协议的文本。用户可以接受它并继续解压或者拒绝它并退出。

许可文本可以包含 HTML 或纯文本格式。在以后的处理过程中,为了使字符串和对话框匹配,自解压模块将合并和重新格式化指定的字符串。所以如果你希望重新生成一个新的段落,你需要在它前面放一个空的字符串。

你可以使用 HTML 标签来控制颜色,字体和显示的格式。 HTML 语法的描述可以在 The World Wide Web Consortium 站点找到。也可以使用网页编辑程序来产生 HTML 文本。

相应的 自解压脚本 命令 - License

 

License=<许可协议对话框标题 >

{

许可协议文本 1

许可协议文本 2

...

}

当运行自解压文件时显示指定的作为软件许可协议文本。用户既可以接受它并继续解压或者拒绝它并退出。

许可可以包含HTML 或者纯文本格式。在以后的处理过程中,为了使字符串和对话框匹配,自解压模块将合并和重新格式化指定的字符串。所以如果你希望重新产生一个新的段落,你需要在它前面放一个空的字符串。

你可以使用 HTML 来控制颜色,字体和显示的格式。 HTML 语法的描述可以在 The World Wide Web Consortium 站点找到。也可以使用网页编辑程序来产生 HTML 文本。

如果文本由数个字符串组成,自解压模块把‘ }’字符作为文本的结束标记,所以你在你的文本的字符串的首个位置不应该使用此字符。如果你需要在字符串的开头使用‘ }’字符,在它前面插入空格。

例子:

License=最终用户许可协议书

{

所有版权于 RAR 均属于作者所专有。

此程序是共享软件,任何人在测试期限内均可以使用此软件。

在测试期限过后,你“必须”注册。

 

从文件加载文本

加载选择文件的内容作为许可文本。

 

⑹,自解压选项: 模块

 

允许选择 自解压 模块。 注意并不是所有的模块都支持高级自解压选项。它只被 图形界面 RAR 和 ZIP 模块( Default.SFX 和 Zip.SFX ) 支持,而不被 控制台 RAR 模块 ( WinCon.SFX )DOS RAR 自解压模块 ( Dos.SFX ) 支持。

 

4,把压缩文件转换成自解压格式

 

  此命令使用于当 WinRAR 是用在文件管理和压缩文件管理模式时。它将会转换压缩文件成为自解压。如果你在压缩文件内部,你不需要选择任何要运行该命令的文件,只要使用工具菜单、工具栏上的“自解压文件”按钮或键盘快捷键 Alt+X 运行“把压缩文件转换成自解压格式”命令,并从列表中选择需要的自解压模块。如果你在文件管理模式浏览未被压缩的文件,首先选择要搜索来转换的文件和文件夹。

如果压缩已经是自解压文件,使用该命令可让你从压缩文件删除已存在的自解压压缩模块。这类例子时, WinRAR 不会改变原有的压缩文件,只创建内容相同,但没有自解压模块的新压缩文件。

  如果你选定了 Windows 图形界面自解压模块,会有些推荐的默认值,你也可以单击“高级自解压选项”按钮设置例如默认目标路径、标题和窗口文本等的自解压参数设置。读取高级自解压选项主题可获得更多关于它们的信息。