VS2010 MSI setup project - visual-studio-2010

I haven't seen this problem when browsing the web, so here it is:
I used the .msi file (vs. right click -> Install, option on the setup project) to install "Version 1.0.7" product onto my computer.
I then changed my "Version" to 1.0.8 , and all projects Assembly Version/AssemblyFileVersion properties to 1.0.8.0. I deleted the old Primary Output, and added a new one where I made sure the version was correct under the KeyOutput expanded list. I did this because it didn't update after I changed all Assembly Versions to 1.0.8.0, and it stayed at 1.0.7.0 (the previous version).
I built my Setup project and went to my folder that contained the new 1.0.8 .msi file. I double-clicked and got the "Application already exists, remove existing in Add/Remove Programs" (or similar) dialog, and it stopped installation.
So I checked my: ProductCode-they were the same between new/old versions, UpgradeCode-also the same, RemovePreviousVersion property-set to True between both versions. This is what I checked because I usually found as a solution in all my other searches, but it wasn't working.
So I unistalled the 1.0.7 version, installed 1.0.8 and all worked fine. Still didn't fix my problem where I shouldn't get the unistall first prompt. Note: I've been installing on "Everyone".
I unistalled 1.0.8 again (at this point, no versions exist/are installed), and tried this:
1. Install 1.0.7 from .msi file or Install 1.0.7 by right clicking it's setup project and using the "Install" option.
2. Right clicked 1.0.8 setup project and used the Install option from there.
3. No errors/dialogs pop up, the old version seems to have been unistalled first, then I continued with installation and new version was on the computer. This is what I want!
As you can see here, I need to beable to use 1.0.7 .msi file to install, then when I need to patch/fix/update, I need to be able to 1.0.8 .msi to not display a "Already exists" prompt and just overwrite/merge, but this isn't happening unless I use VS2010 Right Click>Install on the Setup project.
Any help is appreciated.
edit added bolding

Change the ProductCode between the two versions. Read more on major upgrades

Installing a minor upgrade (which is the case when you change the ProductVersion but not ProductCode) requires specifying REINSTALL if and only if a previous version is present on the machine. There are ways to do this for explorer-launched scenarios by specifying it in the Property table and clearing it with a custom action, but it's much more common to handle it with a launcher or by using a major upgrade.

Related

Spring Tool Suite (STS) upgrade fails

An update was downloaded automatically by my 2.6.3.RELEASE Build 201411281425.
STS (Spring Tool Suite) asks to install it and when I click on the pop-up window it does some things and then stops with the following message which seem to indicate that it wants to delete itself.
I can understand why this fails but I am not sure why STS would think that this was possible.
I could not find any instructions about manually installing the zip file that is available as a download as an alternative way to upgrade my installation.
How do I fix the automatic install or manually install the zip?
(I am on Windows 7)
Error message:
An error occurred while uninstalling
session context was:
(profile=DefaultProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Uninstall,
operand=[R]org.springsource.sts.ide.executable.win32.win32.x86_64
3.6.3.201411281415-RELEASE-e44
--> null,
action=org.eclipse.equinox.internal.p2.touchpoint.natives.actions.CleanupzipAction).
Backup of file C:\RAMDrive\spring\STS.exe failed.
File that was copied to backup could not be deleted: C:\RAMDrive\spring\STS.exe
Start the STS you want to upgrade and before you click on "Check for Upgrades", with STS still running, rename the STS.exe file you just started, to something else, like "STS_old.exe". That should do it.
The message sounds strange, I've never seen this before. To install a fresh copy of STS, just download the ZIP file from the download page (the one that matches your operating system and pick the right 32bit or 64bit one, depending on your OS and the JDK you are using). Then unzip, and start STS.exe. That's it.

Can a .pkg replace an application bundle with a different name?

In the previous Mac release of our software, we foolishly put the major version number in the application bundle name: /Applications/CellProfiler2.0.app
Now we are about to release version 2.1. Is it possible to have pkgbuild make a .pkg package that installs the new version as /Applications/CellProfiler.app but removes the old /Applications/CellProfiler2.0.app?
It is; and in fact, You have, as we see it, two options here:
1) Use pre-install scripts in the pkg to either detect your old version and ask the user to remove it, or remove it yourself (or first just rename the directory to be without the 2.0)
2) Package your installer in a DMG, and run the installer as a separate file altogether, and do either of the above.

How do I force Inno Setup to make the 'uninsneveruninstall' flag retroactive?

Inno Setup keeps an "Uninstall log" file unins000.dat in the application's install directory. This file contains a list of all the files that are to be uninstalled when the application is removed. When a new version of the app is installed over the old one, Inno Setup just appends any new files to the "Uninstall Log".
An early version of my application removes some user-modified template files when it is uninstalled, because I forgot to include the uninsneveruninstall flag for those files.
In the latest version of the software, the uninsneveruninstall flag is set, and the files don't get removed....... unless the latest version was installed over the broken version. Then, because those files are in the uninstall log without that flag, they get removed upon uninstall!
I can't ask my users to uninstall the old software before upgrading, because then they would lose those files.
Can I force Inno Setup to regenerate the uninstall log from scratch? Or at least remove/overwrite the entries for these files? I want the uninsneveruninstall flag to be retroactive.
You can't change that flag retroactively. Once it's been released, then that's it.
An option though would be, during the setup, to detect the older broken version having been installed (If not by version number, maybe a flag in the registry to say the fix has been applied) and backup the folder in question, perform an uninstall (silently) then restore the folder.
The setup can then carry on as normal.

Installing assemblies to GAC with Windows Installer

I am creating a Windwos Installer project just for the use of installing our third party assemblies into the gac of the users computer. The problem i am running into, is when i make an update to the assemblie and increment it's version number, i get an error saying:
"Another version of this product is already installed. Installation of this version cannot continue..." I would have figured that windows installer would update the local machine with the new assemblie. Am i doing something wrong?
It sounds to me like you're updating the version number of the assemblies, and you're updating the version number of the MSI package, but you're not changing the ProductCode.
If you change the ProductCode, you will enable a "Major Upgrade", and this error message will go away.
If you don't change the ProductCode, then you'll need to run a command-line like:
msiexec.exe -i mymsifile.msi REINSTALL=ALL REINSTALLMODE=vomus
This is known as a "Minor Upgrade".
See the MSDN articles on Minor Upgrade and Major Upgrade for clarification.

How do I manually install an old cygwin package?

A project I am working on requires an old version of SLAPD (the LDAP
server) and must run on Windows, hence I am using cygwin packages:
I've found a binary package of slapd version I need 2.2.x here:
http://www.mirrorservice.org/sites/sourceware.org/pub/cygwin/release/...
How do I manually install it in cygwin? It does not seem to be a package-manager file format (like an RPM or a Deb), but is there a tool to install it for me?
FYI, I'm operating behind a corporate firewall that prevents me from viewing the main cygwin site (including the documentation), so please nobody tell me to RTFM - I wish I could!
Thanks
If you need an older version, the Cygwin time machine might help. To use it, I had to invoke setup.exe from the command line, giving it the --no-verify/-X option and it still wouldn't let me downgrade the "cygwin" package itself but at least it is, albeit very slowly, allowing me to install the version I wanted to test as a parallel installation.
If you are using the cygwin package installer to install this package, usually if you select to view the full info and scroll to the package you need you will see some info about the version.
Now if you click on the version number you will see that it changes from the oldest in the repository to the current. If your repository has the version you need then just finish the wizard.
Some cygwin mirrors keep old package files, for example, http://mirror.isoc.org.il/pub/cygwin/
You can use Sonatype nexus to mirror an existing cygwin repository, but provide your own setup.ini .
Copy the already downloaded repo content to c:\progs\nexus\sonatype-work\nexus\storage\mirror.isoc.org.il-pub-cygwin\
Put your own setup.ini and setup.bz2 there.
Start setup.exe with --no-verify
Paste
http://localhost:8081/nexus/content/repositories/mirror.isoc.org.il-pub-cygwin/
into the mirror selection box and click "Add"

Resources