跳到主要内容

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=32.7.1.67493 及以后版本支持
1 强制覆盖安装
2 新版本与已安装版本相同时覆盖安装
3 新版本高于已安装版本时安装驱动(默认)
4 当未检测到系统内安装驱动时安装,已安装则不安装
备注:不设置参数时默认为3。

注意

执行命令行参数过程中必须使用“管理员权限”运行,否则会提示“拒绝访问”。

查看命令参数(/?)示例:

1704004572231

集成安装包

这里将帮助您在您的安装包中集成打包 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();
}
}
}