Я устанавливаю файл MSI как часть сценария установки Inno Setup. Есть ли способ удалить его как часть процесса удаления моей программы?
Удалите MSI во время удаления Inno Setup
comment
Лекс Ли уже привел вам пример того, как это сделать - я просто добавлю, что иногда лучший вариант - не делать этого. В частности, когда в MSI есть собственная запись «Программы и компоненты», это означает, что у пользователя по-прежнему будет возможность удалить его после удаления вашего приложения, поэтому вам нужно будет подумать, возможно ли, что сам пользователь или какое-либо другое приложение они установили, возможно, это приложение / компонент по-прежнему потребуется для чего-то. Если есть сомнения, лучше спросить пользователя или просто оставить это там, чем рисковать взломать другое приложение (поскольку обычно неясно, почему).
- person Miral   schedule 07.11.2013
comment
Есть ли у MSI какой-то счетчик зависимостей, который показывает, сколько программ их использует?
- person sashoalm   schedule 07.11.2013
comment
Не знаю, но сомневаюсь. Типичное поведение - даже не запускать MSI, если компонент уже установлен, что означает, что у него все равно не будет возможности обновить свой счетчик, даже если он у него есть.
- person Miral   schedule 08.11.2013
Ответы (2)
Самый простой способ - узнать, какой GUID у этого пакета MSI,
http://msdn.microsoft.com/en-us/library/aa370568(v=vs.85).aspx
так как после установки он будет зарегистрирован под 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
(или под своим WOW64).
Как только вы узнаете GUID, его можно удалить, позвонив
MsiExec.exe /X{A879B90E-B62C-4DA4-9C3F-79A1A6CFAAF9}
Здесь {A879B90E-B62C-4DA4-9C3F-79A1A6CFAAF9} - это пример "Веб-страницы Microsoft ASP.NET - Инструменты Visual Studio 2010".
person
Lex Li
schedule
06.11.2013
Вариантов очень много. С партией:
@echo off
setlocal
set "key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
set raw=%key%\%%i
for /f "tokens=7 delims=\" %%i in ('reg query %key%') do (
if "%%i"=="Microsoft .NET Framework 3.5 SP1" (
for /f "skip=4 tokens=2,*" %%j in ('reg query "%raw%" /v UninstallString') do (
rem This command iniatlize uninstallation of .NET Framework
start /wait "%%k"
)
)
)
endlocal
exit /b
С wmic:
wmic Product where Name="Microsoft .NET Framework 3.5 SP1" call Uninstall
И больше.
P.S> «Microsoft .NET Framework 3.5 SP1» приведен здесь только в качестве примера.
person
greg zakharov
schedule
06.11.2013