Creating an Uninstaller for my program? - vb.net

I am preparing to publish my software. I have created my own custom installer/uninstaller. I was wondering how I can have the uninstaller appear in "Programs and Features" under "Uninstall a program."
Thanks in advance

I guess the easiest tool to create a setup is Inno setup. The normal and recommended delivery method is using Windows Installer, but this technology is quite involved to deal with. If your tool is simple, perhaps just have a look at Inno setup and see if it gets the job done quickly for you. It's capable of installing and registering your application in add / remove programs.
Here is another thread: What to use for creating a quick and light setup file?

Related

Adding software setup to installer

I'm writing an installer for an application. Most of the installer is done and working, but I have on more step outstanding. I need some way to add a setup window to the installer, that will take user input like server address and port, etc. and write these to the relevant files for system start-up. This preferably done through a GUI of sorts inside the installer.
I've tried creating an executable file that runs after installation, but this does not always execute on different systems.
Is there a way to add a GUI to the installer itself that executes after the directory structures and files have been put into place?
Thanks in advance.
In general you should seriously consider doing this as a standalone app that runs when the app first runs and needs configuring. Then it's a program that runs in a user context and can be tested and debugged in the normal way. At least consider what the user is going to do if they want to change the server address or the port - will they need to uninstall your app and reinstall it just to change the server details or the port?
The GUI may not run correctly when started from the install for a number of reasons. It may be initiated with the system account if it's a deferred CA. It wasn't started from the interactive user shell, so it probably won't have any idea of a working directory. It's being run from an msiexec.exe process running in the system directory and maybe with a system account - that's not really the place to be doing your GUI configuration.
I assume you're using WiX, it doesn't say so in your question but it's tagged with WiX.
I would have a read of http://wix.tramontana.co.hu/tutorial/user-interface-revisited (or http://www.dizzymonkeydesign.com/blog/misc/adding-and-customizing-dlgs-in-wix-3/ has a relatively easy to read example), you can add or edit any of the dialogue boxes in the installer, you'll need to download the source to get at the built in dialog, and it does require some "play" to get everything quite right but worth it to get a professional looking installer.

Creating automated Installer for any Program

How can I create an automated Installer for a program that has a regular Installer with questions like:
Install Directory,
Accepting License,
Creating Icon on Desktop
etc...
Assuming that I am OK with building an Automated Installer for every program I want to separately, Or i want to put files in a Self Extracting Archive and run the Installer after unpacking.
Do I need a third party program for it? Should I use Command Prompt? Do I need to learn Lua? (I'm learning C#)
EDIT:
To clarify I'll use an example:
Let's say i wrote a program but that program has a requirement, like
DirectX, or Adobe Air, or Maxthon Browser.
I wrote my program in such a way that I have to be sure that that is
installed in a very specific Drive/Folder on the PC or with some
specific preferences/parameters.
I include an installer for this program, but I want to specify where
it gets installed on the PC and with what parameters.
Preferably Installing this requirement right after or during the
Installation/Extraction of my own program.
I'm looking for a way to be able to run the Installer of any given program and navigate through the install wizard of it with out the user having to/being able to change the settings I need (with the foreknowledge and permission of the user of course).
It doesn't need to be silent install or anything.
I have rewritten my answer.
Your mentioned setups requirements seem very common to me for the class of installation programs (setups) and not at all unusual.
Generally you have two options:
You write everything on your own, you create the install dialogs, the way the settings are saved, and so on. Then you are fine with C# (or any other language).
It is quite uncommon to do so, because it is time consuming, and you are reinventing things which have been solved in standard ways several times. Moreover you will fall in common setup error traps which are maybe already captured (or at minimum documented) if using tools.
If you want to use a tool, it is your first decision, if you want a tool based on MSI (Windows Installer) or not. MSI is the most powerful and most industrial-accepted setup technology in Windows, but it is a quite complicated matter, and no tool can shield this 100% from you. Google for WiX (Open Source) or InstallShield as starting points for MSI tools but there are of course more.
Some tools are already integrated or integrateable in Visual Studio for example.
Selfextracting tools are a starting point, but the following tools offer far more and are a good intermediate way between the extreme points SFX and MSI:
InnoSetup
(has also a home here on SO).
Nullsoft Scriptable Install System (NSIS) on SourceForge
One self extracting program in Windows I want to mention, because it is not widely known, that "IEXPRESS.exe" is already included in the OS.
Concerning your special question of navigating through the install wizard:
Every mentioned tool has ways to save install settings and of course is deciding which settings are changeable by the user part of the 1*1 of setup creation. With the tools you can design the install dialogs like you want consisting of the parts you want.
I hope I got your point.
P.S. While most tools have kind of a scripting language or something similar included, you are normally free to extend the installation process with your own actions written in nearly every programming language you like.

Is there a good alternative to Install Shield?

I am looking for suggestions to an alternative setup application from Install Shield.
We are currently using Install Shield and I have never been impressed with it. It's way too bulky and the scripting system sucks.
Has anyone had any better luck with any of the other products like WiX, Inno Setup, NSIS or InstallAware, etc? I am not worried about the cost, but what I am looking for is a very lightweight, easy to use application to bundle up our .exe and about 20 support DLLs, registering a few, setting up some registry values and install help.
Can anyone recommend something they are using? It would be nice to hear from people who have switched from Install Shield as well, what makes the new app you're using better.
WiX is the only MSI packager that truly meets the requirement of "very light weight".
It may have a steep learning curve (which can reduced by using some frontend designers) but being backed-up by Microsoft makes it the primary choice for the .NET environment installations.
You can start with this list:
http://en.wikipedia.org/wiki/List_of_installation_software
There are also a similar question which may help you:
What are some good alternatives to InstallShield?
KMoraz already gave what would be my recommendation (WiX), so I'll just say this: Stay away from NSIS and other non-MSI-based installation systems. Yes, NSIS is customizable and scriptable as heck. But MSIs are well-established as the Windows package standard, and you don't want to stray from that standard unless you have an extremely unique reason to do so. Admins have come to rely on the homogeneity of MSIs and the robustness of their cleanups, and users have come to associate the Windows Installer UX with professionalism and quality. Think twice before you give up those advantages.
AdvancedInstaller looks like a reasonable option but have yet to try it out
https://www.advancedinstaller.com/ Still currently on InstallShield Express 2018 but since they've ditched the express products, InstallShield is far too expensive for what it delivers in my case.

Chaining an installer for an exe and msi

I have written a plugin for an application which has an installer as an executable. My plugin is installed using an msi, written in wix. We've now been given permission to distribute the two together. Ideally, this would be in a single file with two installations. Both parts would need to be updated seperately, particularly the main program, I have read that this restricts the methods of installation.
I'm having trouble installing the main program first, then the plugin. I have tried including this main exe in the wix as a custom action, but I'm worried that this will mess things up when either program needs updating. I have seen something called an MsiEmbeddedChainer but can't seem to find anywhere that describes how to implement it.
Any advice, or pointers of useful articles would be greatly appreciated.
Most of what you need to know is linked from the Not supported in Windows Installer 4.0 document, but it will likely still take a lot of trial and error. This blog post has a lot of interesting points to help with rough patches along the way. However let me warn you that my experience with InstallShield has shown that MsiEmbeddedChainer chaining is not as reliable as bootstrap chaining, at least in environments with Terminal Services.

Create a bootstrap that passes arguments to the msiexec

I need to create a bootstrap for my WiX project I've tried using setupbld.exe but it will only allow me to create an executable that will show my UI or one that will behave as a silent installer but not both.
I need to be able to run the resulting executable with argument that will tell it wether or not to show the UI during installation.
I've found this post by John Robbins that explains how to re-build the setup.exe stub used in the creation of the bootstrap but I was hoping there is a simpler way to do what I need.
Does anyone know of a way to create a bootstrap that I use to run either as a simple (with UI) install or as a silent install.
I've seen dotNetInstaller recommended on the WiX mailing list a lot, should be a lot more flexible than setupbld.exe but I haven't used it myself.
Update: If you've got budget to purchase software, try the bootstrapper that comes with MSI Factory (the demo just displays a nag screen before launching the bootstrapper). We use this ourselves and it's been worth every penny.
AT the end I've used 7zip to zip the MSI in a self extracting archive.
You can add a "config" file to let 7zip which files to run when opening the executable.
Check out 7zip's manual for more details.