Virbox用户工具静默安装
安装客户端
Windows 版
直接安装
双击安装包进行安装,安装过程可选择指定安装目录(建议选择默认路径。
命令行安装
Virbox 用户工具支持命令行安装。因为用户工具是需要随着开发者的软件一起发布的,因此可以通过命令行进行静默安装等操作,命令行参数如下描述。
sense_shield_installer_pub.exe [/S] [/c no_driver] [/senseshield_hide_taskbar_icon] [/auto_install] [/not_create_desktop_shortcuts] [/add_ss_restart_schtask --ss_restart_schtask_time=06:00:00]
参数列表
参数 | 说明 |
---|---|
/S | 静默安装(注意必须是大写) |
/senseshield_hide_taskbar_icon | 隐藏用户工具托盘图标,在 /S 模式下才能生效 |
/pc_startup_create_hide_main_window | 程序启动时隐藏主窗口 |
/auto_install | 显示安装进度条,安装到默认路径 |
/not_create_desktop_shortcuts | 不创建用户工具桌面快捷方式,在 /S 模式下才能生效 |
/not_create_startmenu_shortcuts | 不创建用户工具开始菜单快捷方式,在 /S 模式下才能生效 |
/add_ss_restart_schtask | 添加定时任务重启ss服务 |
/not_cover_same_version | 存在相同版本时,不覆盖安装 |
/ignore_env_check | 忽略环境检查 |
--ss_restart_schtask_time=06:00:00 | 指定执行时间为06:00:00 ,在 /add_ss_restart_schtask 选项时使用 |
/ignore_env_check | 指定补丁配置文件目录 |
/ignore_version="2.6.1.[0-9]*" | 2.7.1.67493 及以后版本支持 覆盖安装时忽略对指定版本的覆盖安装,支持正则表达式。当覆盖安装所指定的版本时,安装程序会结束安装,返回错误码 0 |
/install_h5driver=3 | 2.7.1.67493 及以后版本支持 1 强制覆盖安装 2 新版本与已安装版本相同时覆盖安装 3 新版本高于已安装版本时安装驱动(默认) 4 当未检测到系统内安装驱动时安装,已安装则不安装 备注:不设置参数时默认为3。 |
注意
执行命令行参数过程中必须使用“管理员权限”运行,否则会提示“拒绝访问”。
查看命令参数(/?)示例:
集成安装包
这里将帮助您在您的安装包中集成打包 Virbox 用户工具,我们通过 NSIS、C代码、C#代码的例子来帮您自实现工具的打包安装。 INNO 脚本
[Code]
procedure InstallSenseshield;
var
ResultCode: Integer;
InstallerPath: String;
begin
InstallerPath := ExpandConstant('{app}\sense_shield_installer_pub.exe');
{ 同步、静默安装 Virbox 用户工具 }
if Exec(InstallerPath, '/S', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
begin
{ 输出结果到安装日志 }
Log(Format('sense_shield_installer_pub.exe return code: %d', [ResultCode]));
{ 判断安装结果是否成功 }
if ResultCode <> 0 then
begin
MsgBox('Virbox 用户工具安装失败。错误码: ' + IntToStr(ResultCode), mbError, MB_OK);
end;
end
else
begin
MsgBox('无法执行 Virbox 用户工具安装程序。', mbError, MB_OK);
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
{ 安装步骤完成后调用 InstallSenseshield }
InstallSenseshield;
end;
end;
NSIS 脚本
Function InstallSenseshield
;; 静默安装 Virbox 用户工具
; 打包 Virbox 用户工具安装包
File /oname=$TEMP\sense_shield_installer_pub.exe sense_shield_installer_pub.exe
; 获取当前 Virbox 用户工具文件版本号(用于判断是否执行安装)可忽略
${GetFileVersion} "$TEMP\sense_shield_installer_pub.exe" $R0
; (同步)后台执行安装过程
ExecWait '"$TEMP\sense_shield_installer_pub.exe" /S' $0
DetailPrint "sense_shield_installer_pub.exe $R0 return $0"
; 判断安装结果是否成功
IntCmp $0 0 0 ExitInstall ExitInstall
Return
ExitInstall:
; TODO 安装错误处理
FunctionEnd
C 代码示例
#include <stdio.h>
#include <Windows.h>
int main()
{
int ret = 0;
char *silent_install_cmd = "\"C:\\Program Files (x86)\\senseshield\\ss_dev\\Redistribute\\sense_shield_installer_pub.exe\" /S";
ret = system(silent_install_cmd);
switch (ret)
{
case 0:
printf("安装成功\n");
// 静默安装成功,在此处编写后续处理代码
break;
case 3:
printf("已安装版本高于当前版本\n");
break;
case 4:
printf("无法终止运行中进程,重启电脑后重新安装\n");
break;
case 5:
printf("安装文件丢失\n");
break;
case 6:
printf("x64系统驱动文件重命名失败\n");
break;
default:
printf("未知错误\n");
break;
}
getchar();
}
C# 代码示例
using System.Diagnostics;
namespace SSPubPackageSilentInstallDemo
{
class Program
{
static void Main(string[] args)
{
string package_path = @"C:\Program Files (x86)\senseshield\ss_dev\Redistribute\sense_shield_installer_pub.exe";
string silent_params = "/S";
Process process = Process.Start(package_path, silent_params);
process.WaitForExit();
switch (process.ExitCode)
{
case 0:
Console.WriteLine("安装成功\n");
// 静默安装成功,在此处编写后续处理代码
break;
case 3:
Console.WriteLine("已安装版本高于当前版本\n");
break;
case 4:
Console.WriteLine("无法终止运行中进程,重启电脑后重新安装\n");
break;
case 5:
Console.WriteLine("安装文件丢失\n");
break;
case 6:
Console.WriteLine("x64系统驱动文件重命名失败\n");
break;
default:
Console.WriteLine("未知错误\n");
break;
}
Console.ReadKey();
}
}
}