我使用Winrar 3来创建自提取器,并使用-sp
标志将参数传递给捆绑在里面的可执行文件。它工作得很好。在我更新WinRar到5.1
后,它停止工作了。-sp<>
标志不再为我工作。
还有其他人面临类似的问题吗?是否有其他标志可以用来将参数传递给自提取器调用的可执行文件。我阅读了以下关于可用标志的文档。http://www.winrar-tr.com/winrar/Help/ENG/html/HELPGUISFXCmd.htm
可执行文件的参数可以直接在注释文件中与SFX模块的参数一起指定。
下面是一个示例批处理文件演示该技术:
@echo off
cd /D "%TEMP%"
rem Create the file for the SFX module with the SFX options.
echo ;The comment below contains SFX script commands.>TestSetup.txt
echo.>>TestSetup.txt
echo Setup=Test.bat Switch "One more parameter">>TestSetup.txt
echo Overwrite=1>>TestSetup.txt
echo Title=Test Installation>>TestSetup.txt
echo Text>>TestSetup.txt
echo {>>TestSetup.txt
echo ^<font face='Arial'^>An SFX test which just shows how SFX module runs the installer.^<br^>^<br^>Just click on button Install or hit RETURN.^</font^>>>TestSetup.txt
echo }>>TestSetup.txt
rem Create the batch file executed by SFX archive.
echo @echo %%0 %%*>Test.bat
echo @pause>>Test.bat
echo @del %%0 ^>nul>>Test.bat
rem Create the SFX archive.
RAR.exe a -sfx -c -zTestSetup.txt TestSetup.exe Test.bat
rem Delete the created batch and comment file.
del Test.bat
del TestSetup.txt
rem Run the self-extracting archive. User has to press only RETURN.
start /wait TestSetup.exe
rem Delete the self-extracting archive.
:DeleteLoop
del TestSetup.exe >nul
if exist TestSetup.exe goto DeleteLoop
这个批处理文件首先在目录中为临时文件创建文本文件TestSetup.txt,内容为:
;The comment below contains SFX script commands.
Setup=Test.bat Switch "One more parameter"
Overwrite=
Title=Test Installation
Text
{
<font face='Arial'>An SFX test which just shows how SFX module runs the installer.<br><br>Just click on button Install or hit RETURN.</font>
}
对您来说重要的是以Setup=
开头的行。
-
Test.bat
是解压后要执行的文件。 -
Switch
是作为第一个参数传递给Test.bat
的选项。 -
"One more parameter"
是传递给Test.bat
的第二个参数,里面有空格,因为有空格,所以必须用双引号括起来。
下一步批处理文件继续创建Test.bat,内容为:
@echo %0 %*
@pause
@del %0 >nul
这个小批处理文件只是输出第一行它是如何被SFX存档调用的,接下来等待用户点击一个键,最后删除自己。因此,将批处理文件解压缩到哪个目录并不重要。默认为当前目录,即临时文件的目录。
然后批处理文件创建SFX存档TestSetup.exe。有关交换机的详细信息,请参见WinRAR的program files目录中的Rar.txt。
请注意,只有当WinRAR的程序文件目录包含在环境变量PATH中,或者Windows无法找到Rar.exe
(WinRAR的控制台版本)时,Rar.exe
行才能正常工作。在双引号中修改完整路径为Rar.exe
的行,以使批处理文件的这一行独立于 path 中包含的目录。
创建SFX RAR归档文件后,Test.bat和TestSetup.txt文件将被删除,因为不再需要。
现在创建的SFX存档TestSetup.exe被调用,在按回车键之后,你看到Test.bat被调用,其中包含TestSetup.txt中指定的2个参数。
批处理文件最后也删除创建的SFX存档。