问题一:MSI/EXE
问题二:管理员权限是/否。
问题三:软件数量是多/少。
问题四:手动选装/策略自动安装
问题五:版本校验是/否。
一:MSI格式
这个就简单了。
管理员权限可以忽略,因为我们通过域控来安装。
数量多少并没有什么关系,跟执行策略无关。
版本校验,可以自动处置。
手动选装,发布到用户的软件安装中。
自动安装,分配到计算机的软件安装中。
哪些自动安装,就靠组织单位和策略分配了。
二:EXE格式无需管理员权限
无需管理员权限,这就是一个自解压压缩包好不。
随便解压出来就能用。
这数量多少也没什么关系。
手动选装:你随便丢到web下载站,让用户自己下载安装就好了。
策略安装:丢用户登录脚本,bat大概如下
\\server\soft\***\***.exe
版本校验后面一起讲。
三:EXE格式需要管理员。
管理员权限可以套RunAsSpc,生成密钥文件。
数量多的话,可以考虑RunAsRob,为目录许可管理员权限,当然你要配置只读的网络目录,免得被篡改滥用。
手动选装:我习惯3个文件打包到winrar自解压,解压到临时目录,并自动执行RunAsSpc。
策略安装:计算机启动脚本,bat大概如下
\\server\soft\***\***.exe
版本校验后面一起讲。
四:版本校验
版本校验我使用powershell脚本来做。
这个脚本在管理员电脑检查最新安装后文件的版本,显示给你。
只要改最后的一个$filePath路径即可
function GetFileVersionInfo($filePath) {
# 检查文件是否存在
if (!(Test-Path $filePath)) {
Write-Error "文件不存在: $filePath"
return
}
# 尝试获取文件的版本信息
try {
$fileInfo = Get-Item $filePath
$versionInfo = $fileInfo.VersionInfo
# 显示版本信息
Write-Host "文件路径: $filePath"
Write-Host "文件版本: $($versionInfo.FileVersion)"
Write-Host "产品版本: $($versionInfo.ProductVersion)"
Write-Host "文件描述: $($versionInfo.FileDescription)"
Write-Host "内部名称: $($versionInfo.InternalName)"
Write-Host "原始文件名: $($versionInfo.OriginalFilename)"
# ... 这里可以添加更多版本信息的属性,如公司名称、版权信息等
}
catch {
Write-Error "无法从文件中获取版本信息: $_"
}
}
# 示例使用
$filePath = "C:\path\to\your\app.exe"
GetFileVersionInfo $filePath
这个脚本放域启动或登录脚本检查已安装到系统的版本,并执行更新命令
修改最后几行
$targetExe 终端安装后软件的路径
$newVersion = 上一个脚本显示的版本
$upgradeCommand = 升级安装的命令,可以用网络路径参数"\\server\\software\***.exe /S"
function UpgradeIfNeeded($targetExePath, $newVersion, $upgradeCommand) {
# 检查目标exe文件是否存在
if (!(Test-Path $targetExePath)) {
Write-Host "目标文件不存在: $targetExePath"
Write-Host "由于文件不存在,将执行升级命令..."
} else {
# 获取目标exe文件的版本信息
try {
$fileVersionInfo = (Get-Item $targetExePath).VersionInfo
$currentVersion = $fileVersionInfo.FileVersion
# 比较版本号
if ($currentVersion -ne $newVersion) {
Write-Host "当前版本: $currentVersion 不等于 新版本: $newVersion"
Write-Host "正在执行升级..."
} else {
# 如果版本匹配,则不需要升级
Write-Host "版本已经是最新的。"
return # 退出函数,不执行升级命令
}
}
catch {
Write-Host "获取版本信息时发生错误: $_"
# 即使获取版本失败,也假设需要升级(根据您的具体需求)
}
}
# 执行升级命令(这里假设upgradeCommand是一个完整的命令字符串)
Invoke-Expression $upgradeCommand
Write-Host "升级命令已执行。"
}
# 示例使用
$targetExe = "C:\path\to\your\app.exe"
$newVersion = "1.2.3.4"
$upgradeCommand = "C:\path\to\upgrade\script.bat" # 或者其他命令行,比如 msiexec /i upgrade.msi 等
UpgradeIfNeeded -targetExePath $targetExe -newVersion $newVersion -upgradeCommand $upgradeCommand
如果安装路径在C:\Program Files,就放启动脚本,这是计算机级别的软件。
如果安装路径在C:\Users,就放登录脚本,这是用户级别的软件。
五:交互安装
交互安装,主要指要输入信息才能安装的软件。
msi一般没见过,exe见过一些,比方说我这里的北信源。
要输入责任人,选择所属部门……
这个就是套AU3的自动化脚本,但是这是模拟鼠标键盘,一旦双击开始这个自动化任务,就要停止使用键盘鼠标,等待自动化任务完成才可以。
加个msgbox,等用户点击确认不能动键盘鼠标以后再继续任务吧。
AU3,你可以将它看成免费的按键精灵,但是抓抓功能似乎和按键精灵各有千秋,按键精灵有抓图,图片比较,AU3有更深层次的windows空间。
好在免费编译exe。按键精灵还要会员才能编译exe。
vb脚本,比较简单,内置函数也很方便我们处理。
抓点,移动鼠标,点击,输入参数。
滚动条最好是找到滚动条下面一点的位置,点击鼠标,点一次移动一组,是可控的。或者找到上下箭头的位置,点一下,也是可控的。
六:使用时要管理员权限
这个就套个RunAsSpc,随便用什么方式给它分发到用户终端,创建个新的快捷方式,指向RunAsSpc即可。