2009-07-02 6 views
2

Я использую следующий файл bat для установки моего приложения на компьютер пользователя. Однако клиент хочет удалить приложение, если приложение установлено, а затем установить новую версию приложения.bat файл для удаления установленного приложения

Однако у меня есть 2 проблемы.

1) как определить, установлено ли приложение или нет?

2) Если он установлен, как его удалить?

Приложение С # 2005.

@ECHO OFF 
:: Copy the configuration file 
copy config.xml "%AppData%\DataLinks.xml" 

:: Search for the CONFIG file, if this doesn't exit then the user doesn't have the .Net framework 2.0 
SET FileName=%windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG 
IF EXIST %FileName% GOTO INSTALL_DIALER 
ECHO.You currently do not have the Microsoft(c) .NET Framework 2.0 installed. 
ECHO.This is required by the setup program for CAT Dialer 
ECHO. 
ECHO.The Microsoft(c) .NET Framework 2.0 will now be installed on you system. 
ECHO.After completion setup will continue to install CAT Dialer on your system. 
ECHO. 
:: Install the .Net framework and then run setup to install the CAT Dialerr 
PAUSE 
ECHO Installing... this could take several minutes...Please wait.... 
START /WAIT NetFx20SP2_x86.exe 
:: If the user cancels the installation of the framework exit batch file 
IF errorlevel 1 GOTO EOF 
Start CATSoftphone.exe 
ECHO ON 
EXIT 

:: .Net framework has been skipped contine to install the dialer. 
:INSTALL_DIALER 
ECHO *** Skiped Dotnet Framework 2.0.50727 *** 
ECHO Installing... Please wait... 
START CATSoftphone.exe 
ECHO ON 
EXIT 

Редактировать ==============================

<job id="ReInstall"> 
<script language="VBScript"> 
Dim WshShell, oExec 
Set WshShell = CreateObject("WScript.Shell") 
oExec = WshShell.Run("msiexec /uninstall {2E92DD55-37E9-4D6C-B55B-DAFD9DF583E2}" , 1 , true) 
If oExec = 0 OR oExec = 1605 Then 
    oExec = WshShell.Run("InstallUninstallBat.msi") 
End If 
</script> 
</job> 

ответ

2

Возможно, вам лучше использовать популярную (бесплатную) платформу установки NSIS, а не использовать пакетные скрипты. Можно сделать все то же, что и вы, и создать деинсталлятор намного проще.

1

Вот у моей компании тот же запрос переписывался сценарий VB, который что-то вроде:

<job id="ReInstallblabla"> 
<script language="VBScript"> 
Dim WshShell, oExec 
Set WshShell = CreateObject("WScript.Shell") 
oExec = WshShell.Run("msiexec /uninstall {3D96B234-EB0C-4AC3-89EC-E5CAB9AEC432}" , 1 , true) 
If oExec = 0 OR oExec = 1605 Then 
    oExec = WshShell.Run("blabla_setup.msi") 
End If 
</script> 
</job> 

Если вы можете создать проект развертывания приложения, оно будет иметь ProductCode, который вы можете передать в качестве параметра значение msiexec. Возвращаемое значение 0 означает, что удаление успешно выполнено, 1605 означает, что установка с данным ProductCode не найдена.

Надеюсь, это поможет.

+0

Здравствуйте, я проверил ваш файл сценария и добавил свой собственный код продукта и имя msi. Однако, когда я запускаю его, он быстро мигает и ничего не делает. Я что-то упускаю. Я редактировал свой код с помощью своего сценария. Благодарю. – ant2009

+0

Я не уверен, и это, вероятно, не причина, но вы бы удостоверились, что msiexec присутствует в вашей системе. Кроме того, вы можете проверить возвращаемое значение (например, «oExec» в примере) с помощью WshShell.Popup. – tafa

Смежные вопросы