Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт установки софта в зависимости от версии Windows (http://forum.oszone.net/showthread.php?t=328497)

serg_amigo 21-07-2017 11:27 2752924

Скрипт установки софта в зависимости от версии Windows
 
Добрый день, форумчане! Помогите, пожалуйста, новичку сделать скрипт для установки программы на компьютер в зависимости от версии виндовс. Логический процесс я описал ниже:
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 2752931

У тебя сеть с доменом??

Iska 21-07-2017 11:54 2752933

Скрытый текст
Код:

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 2752939

Да, сеть с доменом

serg_amigo 21-07-2017 14:01 2752970

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

Iska 21-07-2017 14:11 2752973

Цитата:

Цитата serg_amigo
Алгоритм написал в теме »

Скрипт по алгоритму приведён выше.

Цитата:

Цитата serg_amigo
Соответственно программу ставить уже не нужно если она установлена. »

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

serg_amigo 21-07-2017 14:43 2752976

Секретов нет
Приложение называется 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 2753001

Ох, господи… Ну, почему у них всё всегда через жёппу?!

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

serg_amigo 21-07-2017 16:28 2753003

Цитата:

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

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

Iska 21-07-2017 17:25 2753013

Я правильно Вас понял, что msi один и тот же для Windows 7 и для Windows 10?

Busla 21-07-2017 19:24 2753035

Цитата:

Цитата serg_amigo
Хочу добавить этот скрипт в GPO для автоматической установки приложений. »

у вас в GPO уже есть определялка версий Windows и нормальное средство развёртывания msi. IMHO проще и правильнее костыль использовать только там, где не работают нормальные средства. XP так или иначе сами отомрут, а скрипт останется.

Iska 21-07-2017 19:37 2753038

Цитата:

Цитата Busla
XP так или иначе сами отомрут, »

Busla, они отомрут только вместе с техникой.

serg_amigo 21-07-2017 23:26 2753069

Цитата:

Цитата Iska
Я правильно Вас понял, что msi один и тот же для Windows 7 и для Windows 10? »

Да, версия msi одна

serg_amigo 24-07-2017 14:01 2753632

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

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

Iska 24-07-2017 14:32 2753639

serg_amigo, тогда выясняйте, что и куда пишется в реестр:
Цитата:

Цитата serg_amigo
проверять через реестр? »

откуда можно было бы определить, что приложение установлено. Хотя то, что я увидел в msi, не внушает мне оптимизьму. Сдаётся, что надёжнее будет сделать свой msi из имеющихся msi и exe инсталляторов.

serg_amigo 25-07-2017 15:03 2753925

Я попробовал из 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 2763102

Код:

@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 2763152



Время: 23:29.

Время: 23:29.
© OSzone.net 2001-