create installer and uninstaller both for C# .net project

i have visual studio 2010

i have created a .net project C#.net which produces a simple DLL...Its on .net framework 3.5

Now, i created a setup project to install that DLL on users machine.
I can do a silent installation on my/users machien by running -
setup.exe -quiet

Now, I might have to make changes to my DLL and upgrade that DLL on users machines for many times...
I donot want to go to users machine and uninstall my dll using add-remove programs each time I upgrade my DLL...

How can i create an uninstaller for that DLL? So that i can run a command and it will do a silent uninstall of that DLL ? thansk a lot...  

pl help
at999Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Jacques Bourgeois (James Burger)PresidentCommented:
.NET dlls are not registered as COM dlls are. You can simply delete the file.

Have the installer for your new version look for an older version and delete it.
markmiddlemistCommented:
Working on the assumption you're using a standard visual studio setup project, select the setup project in solution explorer then go to the properties grid (press F4), then set
RemovePreviousVersions to true

This means that newer versions of files overwrite existing ones  - http://msdn.microsoft.com/en-us/library/y63fxdw6(v=vs.90).aspx for more details

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
at999Author Commented:
I tried setting - "RemovePreviousVersions" to true, but it does not re-install it....
So if I do this-
setup.exe -quiet -l mylogfile.txt

Log file - shows this message


MSI (s) (EC:24) [14:01:44:541]: Product: MyProduct-- Configuration failed.

MSI (s) (EC:24) [14:01:44:541]: Windows Installer reconfigured the product. Product Name: MyProduct. Product Version: 1.0.0. Product Language: 1033. Manufacturer: MyCompany. Reconfiguration success or error status: 1638.

Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
{A61D2D77-A974-46F5-9DB3-DE8358C1C4ED}
OWASP: Forgery and Phishing

Learn the techniques to avoid forgery and phishing attacks and the types of attacks an application or network may face.

at999Author Commented:
I tried changing version number in the setup-project did a silent upgrade/install

However, it did not update my actual DLL, it just updated the TLB file..
markmiddlemistCommented:
gi in to the assembly properties on your class library project and change the version number there - it will only overwrite files where it recognises the version in the instaler is newer.
at999Author Commented:
is there any risk in changing the version on my class library...
at999Author Commented:
will it change the GUID of my DLL if I change the version number? Thanks
markmiddlemistCommented:
It will need to change the version number of the DLL in order for it to upgrade it.

As for the GUID, do you mean for COM exposure? If so then no it won't change that.
at999Author Commented:
no by GUID I mean the GUID mentioned just below the namespace of my DLL -

namespace MyDLLNamespace
{
    [Guid("527aee8e-d3f8-4a99-8fe4-6064c7697637")]
}

That guid is in the registry too under these locations -

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyDLLNamespace.MyDLLClass\CLSID

 
HKEY_CLASSES_ROOT\MyDLLNamespace.MyDLLClass\CLSID


HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{527aee8e-d3f8-4a99-8fe4-6064c7697637}
at999Author Commented:
Also I see registry entry in this -
HKEY_CURRENT_USER\Software\MySoftwareWhichwilluseDLL\DockingPaneLayouts\panestate\Pane-19\

I think mysoftwarewhichwillusedll is using COM to use the dll
markmiddlemistCommented:
That value is safe then, unless you actually go in and explicity change it yourself
at999Author Commented:
OK Thanks...

You mentioned -
gi in to the assembly properties on your class library project and change the version number there - it will only overwrite files where it recognises the version in the instaler is newer.

Do i have to change the AssemblyInfo.cs in the project of mydll?
as below -
 // Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.