У меня есть файл install.bat, написанный для меня кем-то.Необходимо установить приложение на основе разрядности MSOffice на клиентском терминале.Также необходимо запустить установочный файл драйвера клиента SQL на основе разрядности Windows.
Часть SQL работает нормально.Но он постоянно устанавливает 32-битную версию приложения вместо 64-битной, когда у меня определенно установлена 64-битная офисная установка (тестировали на 2 компьютерах с 64-битной офисной версией).Я уверен, что эксперт сможет просмотреть код и быстро сказать мне, в чем проблема.Это не моя область знаний, но я знаю, что это не очень сложно.В папке установки есть папки с именами Source32 и Source64.Два 32-битных приложения в Source32 и два 64-битных приложения в папке Source64.Он извлекает их из соответствующей папки и помещает в созданную папку в корневом каталоге (C: \ QuickSuite).У меня есть только очень смутное представление о том, на что я смотрю, поэтому я даже не уверен, что попробовать.
@Echo off&SetLocal
Set "KEY="&Set "GUID="&Set "IOV="&Set "MWB=32"&Set "MOB=32"
Echo=%PROCESSOR_ARCHITECTURE% %PROCESSOR_ARCHITEW6432%|Find "64">Nul&&(
Set "KEY=\Wow6432Node"&Set "MWB=64")
Set "KEY=HKLM\Software%KEY%\Microsoft\Windows\CurrentVersion\Uninstall"
For /f "Delims=" %%a In ('Reg Query %KEY% /k /f "*-001B-*0FF1CE}"') Do (
If Not Defined GUID Set "GUID=%%~nxa")
If Not Defined GUID (Echo=Unable to find Office Product&GoTo :EndIt)
If %GUID:~20,1% Equ 1 Set "MOB=64"
If %GUID:~4,1% Equ 4 (Set IOV=10) Else (If %GUID:~4,1% Equ 6 (Set IOV=16) Else (If %GUID:~4,1% Equ 2 (Set IOV=07) Else (
If %GUID:~4,1% Equ 5 (Set IOV=13) Else (Set IOV=??))))
Echo=&Echo= Office 20%IOV% %MOB%-bit Product installed on a %MWB%-bit OS
If %MWB% == 64 (
@Echo Windows 64-bit...
msiexec /i "%~dp0sql64\sqlncli_x64.msi" IACCEPTSQLNCLILICENSETERMS=YES /qb
)
If %MWB% == 32 (
@Echo Windows 32-bit...
msiexec /i "%~dp0sql32\sqlncli_x86.msi" IACCEPTSQLNCLILICENSETERMS=YES /qb
)
cd %~dp0
SET _source64=.\Source64
SET _source32=.\Source32
SET _dest=%systemdrive%\QuickSuite
SET _FrontOffice=.\FrontOffice
SET _RemoteSMS=.\RemoteSMS
SET _dest_RemoteSMS=%systemdrive%\QuickSuite\RemoteSMS
SET _dest_FrontOffice=%systemdrive%\QuickSuite\FrontOffice
If %MOB% == 64 (
@echo Microsoft Office is 64-bit
robocopy %_source64% %_dest% /E
robocopy %_FrontOffice% %_dest_FrontOffice% /E
robocopy %_RemoteSMS% %_dest_RemoteSMS% /E
)
If %MOB% == 32 (
@echo Microsoft Office is 32-bit
robocopy %_source32% %_dest% /E
robocopy %_FrontOffice% %_dest_FrontOffice% /E
robocopy %_RemoteSMS% %_dest_RemoteSMS% /E
)
:EndIt
TimeOut /t 5 1>Nul