views:

654

answers:

2

I have created an standard MSI installer for P&D of my application which is using following components:

A WCF Service hosted as Windows service. A GUI application that communicates with that service. A Shell extension Dll.

Installer is working very good and without any issue. The issue occurs when user try to install application again over the existing application using MSI installer. Currently, it come up with screen with 2 options "Repair" & "Remove". Both of these options doesn't work and corrupts the intalled application.

What I want is to skip this screen and Show something like a MessageBox saying Application is already installed. As it is not mandatory for me to provide Repair option to User. And at the minimum I should be able to hide or somehow not provide Repair option.

Any help or suggestions for me? So, far I have tried so many things like using ORCA add NotRepair property etc. But none of them worked.

+1  A: 

Have a look at this documentation from MSDN for:

ARPNOMODIFY

ARPNOREPAIR

CheGueVerra
I am already aware of these functionalities but my requirements are different. In my case, user is having the MSI installer. Now he can try to install the software again after installing once. Here is the problem, when MSI shows a screen with 2 options 1. Repair2. RemoveI just don't want that screen. This is the same screen that comes after "change" opion in "Add Remove programs" that you have mentioned.
Sumeet
What do you want when the end user clicks opn your MSI, when it's installed ?
CheGueVerra
A: 

I wrapped up setup.exe and MSI inside a an EXE file. Which on click extracts the files and triggers Setup.exe. In that exe, I added a code to check whether the application is already installed in the machine or not. In case it is installed I prompts user and exits. This way MSI is never started if the application is already installed, thus Repair and Remove screen never comes. Regarding, Change button from Add/Remove screen, I used the solution provided by "CheGueVerra". Thanks to you.

Sumeet