1

我使用 Winrar 3 创建自提取器,并使用-sp标志将参数传递给捆绑在里面的可执行文件。它工作正常。在我将 WinRar 更新为 后5.1,它停止工作。-sp<>flag 不再为我工作。

有没有其他人面临类似的问题?是否有任何其他标志可以用来将参数传递给自提取器调用的可执行文件。我阅读了有关可用标志的以下文档。 http://www.winrar-tr.com/winrar/Help/ENG/html/HELPGUISFXCmd.htm

4

1 回答 1

3

可执行文件的参数可以直接在带有 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程序文件目录中的Rar.txt

请注意,如果WinRARRar.exe的程序文件目录包含在环境变量PATH中,或者 Windows 无法找到哪个是WinRAR的控制台版本,则与行仅在不修改的情况下有效。将带有完整路径的行修改为双引号,以使批处理文件的这一行独立于PATH中包含的目录上工作。Rar.exeRar.exe

创建 SFX RAR 存档后,文件Test.batTestSetup.txt将被删除,不再需要。

现在,创建的 SFX 存档TestSetup.exe被调用,在按下 RETURN 键后,您会看到使用TestSetup.txt中指定的 2 个参数调用了Test.bat

批处理文件最后也删除创建的 SFX 存档。

于 2014-07-04T10:29:39.370 回答