Make an installer which installs a toolbar post-install - c++

My task is to make an installer for an application which provides an option to install a secondary app. The secondary app is one of those common internet toolbars. The main installer should also provide a few checkboxes which will modify the command line arguments for the second app.
I've done hours and hours of searching and tried one of them, but haven't achieved much success. I have tried the Visual Studio Custom Actions but I'm unable to understand it! I just want to know whats the simplest way to achieve this? (Please suggest some install creator solutions which are simple to use)

If you want a free and powerful tool I would recommend Wix, however it might take some time to learn using it. It recently introduced a feature called Burn that does just what you need.
For a payed and easy to use tool I recommend Advanced Installer. The Professional edition, cheapest one, has support for feature-based prerequisites, which is what you need. You can have the full package built in not more than 10 minutes. Just create a new Professional project, add your EXE as a feature-based prerequisite in Prerequisites page, your other application files in Files and Folders page and hit build. You will get an MSI package that installs your resources. However, if you want to have custom UI controls, like a new checkbox or a new MSI dialog you will need the Enterprise edition.

The standard installer that you can script to do just about anything with also a huge community behind it is NSIS. It's open-source, fast, extensible, light-weight, powerful, and absolutely free. I would say it's the industry standard for small to medium dev shops (InstallShield was the standard for the huge companies, but even that is changing now).

Related

microsoft visual studio installer projects issue

I made a laucher application in c++ that use direct 2d and 3d. Now i making a installer for this. I followed microsoft docs and i made it but there is a issue.
I use 'Microsoft Visual Studio Installer Projects' extension to make that.
The issue is if i already installed my launcher with a previous installer msi file, if i rebuilt a new installer msi and try to run it it show me this error
This is the microft docs i followed to make this: https://learn.microsoft.com/en-us/cpp/ide/walkthrough-deploying-your-program-cpp?view=msvc-160
In the future maybe i need make a update for my laucher. It isn't good idea everytime need go to control panel, search and delete the previous application and install the new one manually.
Anyone know how can i make it automatic remove old version and install new one? Maybe there is a better way to create a installer?
Major Upgrade: In order to upgrade properly, you need to use a major upgrade so that your new version uninstalls the old one and then installs itself (this can happen in reverse order too: new version installed and old remnants deleted afterwards, but this is another story). There are further upgrade types, but stick to major upgrades for simplicity.
The message you are receiving is basically because you have a different package code for the new MSI, but not a new product code or version number (or just one of those problems). You need to get the settings straight.
Recommended step-by-step:
Set "RemovePreviousVersions" to True in the project properties.
In the same place: bump up your version number (one of the first 3 digits)
Answer yes when asked to change product code, or do so yourself manually.
Keep the UpgradeCode the same - it needs to be stable across releases.
Rebuild your setups. Clean out your box of old remnants before testing or test on a virtual.
Testing: Remember to simulate your full upgrade process from first version installed to the new one with different version numbers for a few core files and also try to add a few files and such things. Very important to verify.
Heads-Up: Before ending, it is standard procedure to warn about the potential limitations of VSInstaller Projects (shorter list form).
MSI Tools: Here is a short "review" of other MSI tools.
MSI Upgrade Types: Shamelessly stolen from the InstallShield help file (towards bottom):

Create .msi installer with Qt installer framework

I've been looking into the Qt installer framework but when you create a setup using this tool it is a regular setup though I was wondering whether it would be possible to create an msi setup to be able to install a Qt program network wide.
I've looked at the installer framework docs but was unable to find anything about this so far.
Qt installer framework doesn't provide creating of MSI installer. For MSIs you should use WiX for example.
You have got a proper answer, maybe I'll add some further links for you. Before I do that I can verify that WiX can be used to make MSI installers for any type of Windows application.
There are also a few other tools available to make MSI files that you might want to look at depending on your needs - both open source (free) and commercial. Though WiX is very flexible and great when you have it set up, commercial tools can help you get an MSI created much quicker. Have a read below of the different tools and their pros and cons.
Below are a few links for you - I am a "linking monster" :-). If you pardon what looks like shameless self-promotion, it is really a guess as to what you could find useful to get your MSI file created:
What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc (various MSI tools with description of pros and cons)
Windows Installer and the creation of WiX (a little unofficial story of WiX's creation)
WiX "quick start" suggestions (getting started with WiX - not my favorite answer - it is a bit messy - but somehow it seems to be helpful for people)
How do I avoid common design flaws in my WiX / MSI deployment solution? (messy, but may be worth a skim to avoid some problems)
And a few more peripheral links thrown in:
Syntax for guids in WIX? (simplifying WiX source files)
How can I compare the content of two (or more) MSI files? (tools you can use to inspect the compiled MSI files - and some tips for comparing different versions and decompiling MSI files)
Change my component GUID in wix? (understanding the critical component GUID concept in Windows Installer / MSI)

What is the best way to install VC++ redistributables via a group policy?

This ought to be simple, but seems to be anything but.
I wish to create an installer that can be used by those using group policies to install products. I do not know then if this must be an MSI, or an EXE. Can an EXE install be installed via a group policy? I chatted with another Wix novice who seemed to think it was a bad idea to have an install that was a plain MSI file.
My product uses the Visual C++ 2010 redistributables. I do not wish to use merge modules. Both this and this link give some of the disadvantages of using them. I object to 1) installing things that the user has not consented to, and 2) not having a control panel uninstall item with a version number that users can inspect and see if they have the latest version of. Thus, I am not interested in responses consisting of people lecturing me on why I ought to use merge modules. If what I am asking for is truly IMPOSSIBLE without merge modules, then please explain why.
I do not know if it is necessary to use a bootstrapper to kick off an EXE install. I gather that it is, but it seems bizarre for me, for an MSI with such involved tables and descriptions, not to be able to kick of a mere EXE, ON THE CONDITION that the redistributable is not installed already.
If it is necessary to use a bootstrapper, I would like to know if anyone can find a complete example, with both bootstrapper and Wix code, for an example of a product install; ideally, together with the command lines necessary to compile them, for such a common case as installing a VC++ 2010 (or possibly 2012) program, together with its redistributable - with the latter being installed as the EXE.
I have found this to be straight-forward and easy to do in Inno Setup Pascal - except for the Group Policy part. I have found anything but COMPLETE examples and/or straightforward explanations to accomplish this using a Microsoft installer. No matter what Microsoft says, I would consider such an installer to be best practices. My code is not managed, and I would like to support XP. Thus, a bootstrapper that requires some .net to already be installed would only add another unsolved layer of complexity to the problem. One that statically links to a .net library might not be too bad, if it did not create very much overhead. My MSI install seems to work pretty well. I did not realize that installing a vcredist_x86.exe would be a problem with such an elusive solution. I do not have Visual Studio. I am using the Qt framework, and have Visual Studio installed only to compile my application. If you have a bootstrapper solution, please specify which bootstrapper you are using. Ideally, the same idea could be extended to more than one prerequisite, and the same coding pattern could be used. If there were a way to use a merge module or additional MSI so that the redistributable would have its own control panel entry, that could be acceptable.
Brownie points for suggesting a mailing list, forum or well-populated chat channel to talk about Wix that does not require one to receive a lot of unnecessary mailing list traffic.
Group Policies by default don't allow EXEs to be installed. I did read about some admins that repackage EXEs into MSIs to deploy them via GPO but that is rather hacky. There is also the possibility to script the deployment - GPOs support script execution, machine or user level.
You can't embed an MSI within another MSI either because only one installation can execute at any time (Windows Installer design).
I don't know how you will be providing your product to your customers but vcredist_x86.exe (I am trying this with the v100 version) uncompresses into the root folder and generates an msi and a cab (vc_red.msi and vc_red.cab) among other files. If you provide these to your customers they can add them to the same GPO used to deploy your product.

how to create installer file

I am currectly finishing my project in C++ and i'm looking for a way to create my own C++ installer file
which will create the project dll's and exe files into a specific path
what is the easier way to learn how to do it?
There are several ways to build an installer. While you can of course always make one yourself, you should google for something like "create an installer". Some prebuilt solutions include "InstallShield", or the ".msi" file format, which you can create on your own using something like "Advanced Installer".
Of course, if you want your users to build your project from source, then you need a makefile and to make sure you bundle all the libraries. There are also kits like autotools to do that for you.
If you use VS 2010, Installshield LE would suffice as it is integrated into VS 2010.
If you have access to Installshield IDE, there is nothing better available for your packaging needs.
There are two ways of packaging:
a) The LEGACY way
b) The Windows Installer way, Basic MSI is the keyword here.
The LEGACY way involves creating your own scripts for:
a) Installing the files to their locations
b) Writing registry entries, if needed
c) Registering COM components, if needed
d) Creating shortcuts etc...
Tools that can be used for LEGACY approach are:
a) NSIS - very good and has a scripting language of its own.
b) Installshield - has a project type called Installscript Project. Installscript is the scripting language to be used.
The Windows Installer way is a bit hard comapred to the LEGACY way.
One has to learn the basics of MSI technology which can be daunting.
The package created has .msi as extension. This file is a database that the developer configures and the Windows Installer takes care of all other things. This is called TRANSACTIONAL installation procedure.
Even the UI presented during install is configured in the Database using tables like Dialog, Controls etc...
Tools that can be used for Windows Installer approach are:
a) Installshield - has a project type called Basic MSI
b) Wix - Opensource and xml based. You configure appropriately named xml files and various utilities in the Wix package will help you to create an MSI package.
First after completing your project click save. Second click on file tab,Add,New Project.
In new Project Click other Project types , Setup and Deployment and in that You can click InstallShield LE or Visual Studio Installer.
Hope this Helped you
I always recommend NSIS. You might also investigate HM Nis Edit - it's an IDE for NSIS that has a useful wizard feature. It will generate an installer script for you which you can further customize. The documentation is extensive.
can't believe no one mentioned install creator pro(there is also a free version with a branded message that displays after installing). Its feature set is pretty limited, though it has options for writing registry values and specifying custom paths to %AppData% or any other place you may want to install some files. it also has an optional wizard interface, and with each step you have the oppurtunity to preview each individual page.
the paid version offers the option for adding serial number/registration to your program. i've never tried it so i'm not sure how effective it may be. its also quite and expensive little program, but i would recommend it atleast to the beginner or someone who is more concerned with maintaining the codebase of their program and less concerned with how fancy and decorated their installer program is.
i know its been a long time since this was posted but for future reference this program is far easier for any beginner to creating installation packages for the first time

c++ invisible app that launches an exe using native libraries

I'll begin with an apology since I am new to c++ and maybe my questions make no sense.
I have a c# app, unfortunately it requires .Net framework to be installed on the machine.
I'd like to make a c++ application that will copy a .Net installer from a cd, and run the installer on quite mode.
The c++ app must be hidden, no console or what so ever, and also the most important thing is: it must run on a clean install of windows xp/
Please help me :)
I have no idea how to approach this, since I've never used c++ before.
P.S. (if it's possible to run a c# app that can do the above, saying how would be appreciated).
I tried googling but failed to get an answer
I dont know why you want to have a c++ app to launch the dot net installer. This can be achieved from within DOT NET env itself.
Add a Setup project to your current solution. It can detect installed .net framework and depending on your application's dependencies can offer to install one automatically.
However by default it will try to download the framework but if you intend to supply it on your CD you can configure it to pick up the installer from a local location as well.
Refer here to get you started
http://support.microsoft.com/kb/307353