Показать полную графическую версию : Как избежать ошибки при удалении с помощью MsiExec
Valek271183
19-07-2012, 16:21
есть файл такого содержания:
MsiExec.exe /I{2D270A67-B7CD-4281-B2FE-60DF18D19B8E}
MsiExec.exe /I{45E557D6-2271-4F13-8101-C620B4285AB0}
MsiExec.exe /I{560985FB-4B76-4121-9189-7A2CDC7886D6}
MsiExec.exe /I{45E557D6-2271-4F13-8101-C620B4285AB0}
MsiExec.exe /I{66F1F013-008F-4875-B283-5A814B820347}
это список продуктов среди которых нужно найти тот который на самом деле есть в системе и предложить его удалить/восстановить, но при запуске он не находит один из них и пишет ошибку "Это действие допускается только для установленных продуктов", как избежать ошибки?
Valek271183
20-07-2012, 00:45
***
Valek271183, какие это продукты? Перечислите их названия.
Valek271183
20-07-2012, 14:28
это касперский разных версий, bat будет запускаться когда программа обнаружит одну из версий и запустит эти команды, только вот когда одна из них не подходит выводится на экран ошибка, пробовал несколько команд типа /passive, /q, /qn и т.п но при этом ошибки нет но и ничего не происходит
Valek271183, Вы отвечаете не на мой вопрос. Ещё раз:
Перечислите их названия. »
Суть в том, что можно ориентироваться по общей части названий:
for /f "usebackq skip=1" %i in (`wmic.exe Product where "Name LIKE '%%Общая часть названий для потребных продуктов «Касперский»%%'" get IdentifyingNumber`) do @start "" msiexec.exe /i%i
Valek271183
20-07-2012, 15:21
прикрепил файлы реестра с разделами Uninstall от некоторых версий касперского, в них есть одна общая строчка "Publisher"="Лаборатория Касперского", это поможет?
прикрепил файлы реестра с разделами Uninstall от некоторых версий касперского »
В данном случае он бесполезен.
1. Получите весь список установленных посредством Windows Installer продуктов:
wmic.exe Product
2. Найдите в полученном результате части, однозначно выделяющие потребный продукт разных версий.
3. Составьте достаточное условие вместо «"Name LIKE '%%Общая часть названий для потребных продуктов «Касперский»%%'"» в:
for /f "usebackq skip=1" %i in (`wmic.exe Product where "Name LIKE '%%Общая часть названий для потребных продуктов «Касперский»%%'" get IdentifyingNumber`) do @start "" msiexec.exe /i%i
и пользуйтесь.
Valek271183
20-07-2012, 15:46
Большое спасибо, вроде всё понятно, буду разбираться
Valek271183, мне только сейчас пришло в голову [почему только сейчас, а не сразу — вопрос, объяснению слабо поддающийся, должно быть, сказывается косность моего мышления], что у Вас ведь уже есть это:
Найдите в полученном результате части, однозначно выделяющие потребный продукт разных версий. »
— разве что, не «общая часть», а перечень:
есть файл такого содержания:
MsiExec.exe /I{2D270A67-B7CD-4281-B2FE-60DF18D19B8E}
MsiExec.exe /I{45E557D6-2271-4F13-8101-C620B4285AB0}
MsiExec.exe /I{560985FB-4B76-4121-9189-7A2CDC7886D6}
MsiExec.exe /I{45E557D6-2271-4F13-8101-C620B4285AB0}
MsiExec.exe /I{66F1F013-008F-4875-B283-5A814B820347} »
Т.е., должно получиться нечто подобное:
@echo off
setlocal enableextensions enabledelayedexpansion
set sValue=
for /f "usebackq skip=1 tokens=3" %%i in (
`type "%~f0" ^| find.exe /i "rem # "`
) do (
set sValue=!sValue! OR IdentifyingNumber='%%i'
)
set sСondition=%sValue:~4%
for /f "usebackq skip=1" %%i in (
`wmic.exe Product where "%sСondition%" get IdentifyingNumber 2^>nul`
) do (
start "" msiexec.exe /i%%i
)
endlocal
exit /b 0
rem # {2D270A67-B7CD-4281-B2FE-60DF18D19B8E}
rem # {45E557D6-2271-4F13-8101-C620B4285AB0}
rem # {560985FB-4B76-4121-9189-7A2CDC7886D6}
rem # {45E557D6-2271-4F13-8101-C620B4285AB0}
rem # {66F1F013-008F-4875-B283-5A814B820347}
Приношу Вам свои извинения.
Valek271183
21-07-2012, 12:09
Iska, спасибо за подсказку. При запуске появляется окно установщика Windows с таким содержанием: Невозможно открыть этот установочный пакет. Проверьте что пакет существует и к нему есть доступ и т.д.
Но нужную команду всё таки он запускает. Можно ли избавиться от ошибки?
Valek271183, не могу сказать ничего определённого.
Попробуйте поискать решение здесь:
Microsoft Windows Installer (Установщик Windows) .:[все вопросы]:. (http://forum.oszone.net/thread-54281.html)
Windows Installer (Установщик Windows) .:[все вопросы]:. (http://forum.oszone.net/thread-170848.html)
(и там же задать данный вопрос, если не найдёте решения).
Valek271183
21-07-2012, 13:06
ОК, большое спасибо
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.