我需要创建一个运行名为Deploy-Application.exe文件的安装程序。exe的参数如下所示:
Deploy-Application.exe -DeploymentType "Uninstall"
当我把它放在我的配置文件中,它不起作用,因为Sfx模块认为我的参数只是
-DeploymentType
因为双引号。对于7-zip SFX模块的双引号是否有一个转义字符?就算有,我也找不到!
这是我的配置文件:
;!@Install@!UTF-8!
Title="test"
Progress="No"
ExecuteParameters="-DeploymentType "Uninstall""
RunProgram="Deploy-Application.exe"
;!@InstallEnd@!
EDIT:事实证明,Deploy-Application.exe确实不需要在参数周围引号。我只是通过cmd运行它来测试它,像这样:
Deploy-Application.exe -DeploymentType Uninstall
,它工作得很好。但是,当我有一个像这样的配置文件时:
;!@Install@!UTF-8!
Title="test"
Progress="No"
ExecuteParameters="-DeploymentType Uninstall"
RunProgram="Deploy-Application.exe"
;!@InstallEnd@!
仍然不工作。参数被忽略,我用ProcessExplorer验证了这一点,Deploy-Application.exe启动时没有参数。
使用forward来转义它们
一样""" --> "
EG: ExecuteParameters="-DeploymentType "Uninstall""
ref
好吧,事实证明它与引号或其他东西无关。在阅读了第100次LZMA SDK附带的installer.txt文档后,我意识到'ExecuteParameters'不适用于'RunProgram',它只适用于'ExecuteFile'。
下面是如何使用"Run Program"的参数
RunProgram="notepad.exe"
RunProgram="C:\Windows\system32\notepad.exe"
RunProgram="%Path%\notepad.exe"
RunProgram="fm0:nowait:7z_EN.chm"
RunProgram=""%%T\Reader7Rus.msi" /qn"
RunProgram="hidcon:fm0:"%%S\install.cmd" /Q"
来自我没有仔细阅读的文档:
ID_String Description
Title Title for messages
BeginPrompt Begin Prompt message
Progress Value can be "yes" or "no". Default value is "yes".
RunProgram Command for executing. Default value is "setup.exe".
Substring %%T will be replaced with path to temporary
folder, where files were extracted
Directory Directory prefix for "RunProgram". Default value is ".\"
ExecuteFile Name of file for executing
ExecuteParameters Parameters for "ExecuteFile"