Войти

Показать полную графическую версию : [решено] Скрипт установки софта в зависимости от версии Windows


serg_amigo
21-07-2017, 11:27
Добрый день, форумчане! Помогите, пожалуйста, новичку сделать скрипт для установки программы на компьютер в зависимости от версии виндовс. Логический процесс я описал ниже:
1) Определяем версию windows
Если версия windows xp то выполняется условие 2
Если версия windows 7 то выполняется условие 3
Если версия windows 10 то выполняется условие 4
2) Проверяю для версии Windows XP установлена ли программа?
Если Да то переходим в пункт 8
Если Нет то выполняем пункт 5
3) Проверяю для версии Windows 7 установлена ли программа?
Если Да то переходим в пункт 8
Если Нет то выполняем пункт 6
4) Проверяю для версии Windows 10 установлена ли программа?
Если Да то переходим в пункт 8
Если Нет то выполняем пункт 7
5) Для XP установить программу из сетевого ресурса \\server1\program1.exe
6) Для 7 установить программу из сетевого ресурса \\server1\program2.exe
7) Для 10 установить программу из сетевого ресурса \\server1\program3.exe
8) Выход

p.igor.kin
21-07-2017, 11:46
У тебя сеть с доменом??

Iska
21-07-2017, 11:54
Option Explicit

Dim objSWbemObjectEx

Dim arrVersionParts
Dim objWshShell


Set objWshShell = WScript.CreateObject("WScript.Shell")

For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT Version, ProductType FROM Win32_OperatingSystem WHERE Primary = 'True'")
arrVersionParts = Split(objSWbemObjectEx.Version, ".")

Select Case arrVersionParts(0)
Case "5"
If arrVersionParts(1) = "1" Then
objWshShell.Run """\\server1\program1.exe""", 1, True
End If
Case "6"
If arrVersionParts(1) = "1" And objSWbemObjectEx.ProductType = 1 Then
objWshShell.Run """\\server1\program2.exe""", 1, True
End If
Case "10"
If arrVersionParts(1) = "0" And objSWbemObjectEx.ProductType = 1 Then
objWshShell.Run """\\server1\program3.exe""", 1, True
End If
Case Else
' Nothing to do
End Select
Next

Set objWshShell = Nothing

WScript.Quit 0

Существование и доступность ресурса, наличие на нём файлов никак не проверяется.

serg_amigo
21-07-2017, 12:20
Да, сеть с доменом

serg_amigo
21-07-2017, 14:01
Iska спасибо!
Ребят скрипт рабочий но есть несколько важных моментов.
Поясню.
Хочу добавить этот скрипт в GPO для автоматической установки приложений. Сложность в том, что у нас есть немного компов с ОС XP, 7 и уже 10. Программа для установки из за версий винды тоже разные. Т.е. для xp нужно установить туже программу но более старой версии т.к. на XP она уже не работает. Соответственно на 7 и 10 нужно установить новую программу. Соответственно программу ставить уже не нужно если она установлена. Алгоритм написал в теме

Iska
21-07-2017, 14:11
Алгоритм написал в теме »
Скрипт по алгоритму приведён выше.

Соответственно программу ставить уже не нужно если она установлена. »
Тогда озвучивайте именование приложения, где его взять, либо как точно определить, что приложение уже установлено.

serg_amigo
21-07-2017, 14:43
Секретов нет
Приложение называется bitrix 24
Новая версия bitrix24_desktop.exe
и старая для xp bitrix24_desktop_xp.exe

Проверить установлена или нет можно думаю как вариант по локальному каталогу C:\Program Files (x86)\Bitrix24\ это для 10 винды
а для XP C:\Program Files\Bitrix24\

Возможно лучше проверять через реестр?

Iska
21-07-2017, 16:25
Ох, господи… Ну, почему у них всё всегда через жёппу?!

serg_amigo, Вы пробовали их msi отсюда: Битрикс24: Десктоп-приложение для Битрикс24 (https://www.bitrix24.ru/features/desktop.php)?

serg_amigo
21-07-2017, 16:28
serg_amigo, Вы пробовали их msi отсюда: Битрикс24: Десктоп-приложение для Битрикс24? »

Да, msi буду ставить на 7 и 10 для xp есть только exe-шник

Iska
21-07-2017, 17:25
Я правильно Вас понял, что msi один и тот же для Windows 7 и для Windows 10?

Busla
21-07-2017, 19:24
Хочу добавить этот скрипт в GPO для автоматической установки приложений. »
у вас в GPO уже есть определялка версий Windows и нормальное средство развёртывания msi. IMHO проще и правильнее костыль использовать только там, где не работают нормальные средства. XP так или иначе сами отомрут, а скрипт останется.

Iska
21-07-2017, 19:37
XP так или иначе сами отомрут, »
Busla, они отомрут только вместе с техникой.

serg_amigo
21-07-2017, 23:26
Я правильно Вас понял, что msi один и тот же для Windows 7 и для Windows 10? »
Да, версия msi одна

serg_amigo
24-07-2017, 14:01
"у вас в GPO уже есть определялка версий Windows и нормальное средство развёртывания msi. IMHO проще и правильнее костыль использовать только там, где не работают нормальные средства. XP так или иначе сами отомрут, а скрипт останется."

- Проблема в том, что эта штуковина не ставится GPO средствами. Ну вот не хочет никак (((

Iska
24-07-2017, 14:32
serg_amigo, тогда выясняйте, что и куда пишется в реестр:
проверять через реестр? »
откуда можно было бы определить, что приложение установлено. Хотя то, что я увидел в msi, не внушает мне оптимизьму. Сдаётся, что надёжнее будет сделать свой msi из имеющихся msi и exe инсталляторов.

serg_amigo
25-07-2017, 15:03
Я попробовал из exe создать msi вот что пишет на клиентской машине:
1) Не удалось назначить приложение bitrix24_desktop из политики Bitrix24_install. Ошибка: %%1274
2) Не удалось удалить назначение приложения bitrix24_desktop из политики Bitrix24_install. Ошибка: %%2
3) Не удалось применить изменения для параметров установки приложения. Установка программ, развертывание которых осуществляется через групповую политику для этого пользователя, отложено до следующего входа в систему, поскольку изменения должны быть применены до Ошибка: %%1274
4) Клиентскому расширению "Software Installation" групповой политики не удалось применить один или несколько параметров, поскольку эти изменения должны обрабатываться до запуска системы или до входа пользователя. Завершение обработки групповой политики будет выполнено перед следующим запуском системы или входом этого пользователя, что может вызвать замедление загрузки и запуска системы.

norem
06-09-2017, 16:58
@echo off

Set Tip=UNKNOWN

Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "Windows XP" >nul
If "%ERRORLEVEL%"=="0" Set Tip=WinXP

Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "Windows 7" >nul
If "%ERRORLEVEL%"=="0" Set Tip=Win7

Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "2003" >nul
If "%ERRORLEVEL%"=="0" Set Tip=Win2003

Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "2008" >nul
If "%ERRORLEVEL%"=="0" Set Tip=Win2008

Reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | Find "2012" >nul
If "%ERRORLEVEL%"=="0" Set Tip=Win2012

Set xOS=x64

If "%PROCESSOR_ARCHITECTURE%"=="x86" If Not Defined PROCESSOR_ARCHITEW6432 Set xOS=x86

Echo %xOS% - %Tip%

if "%Tip%"=="WinXP" if "%xOS%"=="x86" Echo ---WinXP x86---
if "%Tip%"=="WinXP" if "%xOS%"=="x64" Echo ---WinXP x64---
if "%Tip%"=="Win7" if "%xOS%"=="x86" Echo ---Win7 x86---
if "%Tip%"=="Win7" if "%xOS%"=="x64" Echo ---Win7 x64---
if "%Tip%"=="Win2003" if "%xOS%"=="x86" Echo ---Win2003 x86---
if "%Tip%"=="Win2003" if "%xOS%"=="x64" Echo ---Win2003 x64---
if "%Tip%"=="Win2008" if "%xOS%"=="x86" Echo ---Win2008 x86---
if "%Tip%"=="Win2008" if "%xOS%"=="x64" Echo ---Win2008 x64---
if "%Tip%"=="Win2012" if "%xOS%"=="x86" Echo ---Win2012 x86---
if "%Tip%"=="Win2012" if "%xOS%"=="x64" Echo ---Win2012 x64---

Elven
06-09-2017, 18:42
https://i.gyazo.com/164d0e92c060a5e319a276ee0afd7dfc.png




© OSzone.net 2001-2012