Installing a new version of a deployment project over old version - deployment

I have a deployment project which will not let me install over an older version. The msi file says to uninstall the program first from Add/Remove programs. This is not a good user experience. How can I do it so that the installer will simply remove the software first and then install the new version?

This is tricky, you have to do following steps,
Set Remove Previous Installation as True
Set Detect new version as True
Your C# program's version must increase with every deployment
You should change version of your installer to one higher version and it will ask you to change product code, select YES.
Do not change your upgrade code, let it be same.
If you do not do 3rd step correctly, installer will still install and keep the old file, your file version of every file must be new if you have changed your content.

I tried out a few scenarios, maybe this will help someone save some time
If Assembly Version changes AND project installer version changes (with ProductCode Guid changing also)
-> App installs over the top of existing one
-> dlls and exe versions get updated
-> IF path installed to is different, existing initially installed project files are deleted from where they were installed. (and files made since remain)
If Assembly Version changes AND project installer version changes (without ProductCode Guid changing)
-> User is asked to manually remove the application
-> if they go ahead and remove from control panel first, app can then be installed and the dlls and exes get updated to the new version
If ONLY Assembly Version changes, or only project installer version changes (without ProductCode Guid changing)
-> User is asked to manually remove the application
-> if they go ahead and remove from control panel first, app can then be installed and the dlls and exes get updated to the new version
If ONLY project installer version changes (with ProductCode Guid changing also)
-> MSI goes through install process, but dlls and exe do not change version -they are as per assembly version, and are replaced with files of same assembly build version
-> IF path installed to is different, existing initially installed project files are deleted from where they were installed. (any files made since remain)
If project installer version changes (with ProductCode Guid changing also) and assembly version is lower than installed version
-> Installation will commence, at the end user is informed install fails as old version.

Set setup project property RemovePreviousVersions True
But you have to use same UpgradeCode in both setup applications

You can do this sometimes after installing new version the old product will remain same.
You need to change the sequence number of RemoveExistingProducts ,It must schedule between
Install Validate action and InstallInitialize . You can do this by ORCA
For Ex InstallValidate=1400
InstallInitialize =1500
Then RemoveExistingProducts =1450

If you are using visual studio 2012 or upper version ,
If you have already installer folder under the solution folder, just open the Project assistant under Installer and double click on it .
2.Once you open Project assistant you see the Application Information ,here you can enter the version you want to change it.

Related

notepad++ unable to install or update plugins with the new plugin admin

I installed notepad++ recently which came with the new plugin admin. After that I am unable to install new or update existing plugins.
Any idea what the issue could be? I tried "Run as administrator"and also pasting the dll directly to C:\ProgramData\Notepad++\plugins but nothing works.
Here are the app details.
Notepad++ v7.6.1 (64-bit)
Build time : Dec 12 2018 - 01:22:05
Path : C:\Program Files\Notepad++\notepad++.exe
Admin mode : ON
Local Conf mode : OFF
OS : Windows 10 (64-bit)
Plugins : DSpellCheck.dll mimeTools.dll NppConverter.dll
1) to install plugins manually copy the dlls in folder \Plugins\ but stored in individual folders (having same name than file.dll)
note. plugin Admin place for plugins is C:\ProgramData\Notepad++\plugins
2)Plugin Admin, if you can see this entry in Menu, I understand you have the Setup version and during installation "Don't use %APPDATA%" checkbox was disabled.
You have to:
Tick the checkboxes of plugins to install
Click "Install"
Click "YES" when asking about restart the app
if this doesn't work, are you receiving any message?
I was able to get this working with a 32-bit version. I was trying to install a 32-bit compatible plugin and that did not work with a 64-bit version.
I had to manually copy the dll to C:\ProgramData\Notepad++\plugins.
I had similar problems, mine were caused by my company introducing WIndows 10 (64bit) and enforcing UAC.
Problem was, that proxy-information was not persisted in NPP, I also couldn't specify my proxy-credentials in the Updater-Proxy-dialog.
Solution was not using %APPDATA% during installation, then run NPP in administrator-mode (now proxy-credentials are persisted).
After restarting NPP in non-administrative mode, Plugin-Admin worked like charm.
Did a quick write-up here how to remedy this:
https://blog.2smart4u.de/2019/07/notepad-windows-10-uac-plugin-nightmare.html
the default plugin folder has the dll. if you get it installed on another machine and can create the plug can copy the folder from that location, go back to old location, close the program then drop the folder in the default location then open up u should now see the plug in.

Create upgrade setup using installshield 2010 primier

I want to create an upgrade setup. I have an old setup with for example version 1.0.1.43 and my new setup will has version of 1.0.1.45
I have created a new basic MSI project in installshield. I set version to 1.0.1.45 I copied both product code and upgrade code of old setup into upgrade setup. I also added all of new files in setup that should be replaced with files of old setup. I selected all files and then right clicked on them and in properties checked always overwrite option. then in Media section I added a major upgrade with upgrade code of my old setup. then I build the setup.
when I run this setup it shows me that you have installed this application do you want to upgrade it or not? then I choose yes to upgrade. after installing this setup I figured it out that in add/or remove programs version of my application has changed to 1.0.1.45, that means it has been upgraded. but when I check files I see that none of new files has been replaced with new one.
Where am I wrong that this setup ignore all of my new files to replace? I want this setup find old path of old setup and after removing all files, add new files to that path?
thanks
As you are saying, you have created new MSI installer for upgrade. So in this case the component ID of components in which your files are present, got change. So you need to set values of Component ID with the component IDs of your installer 1.0.1.45. Or you need to create different components with the same target path.
Also you can validate your upgrade build 1.0.1.46 with the main build 1.0.1.45 with following steps.
Build Menu -> Validate -> Upgrade Validation Wizard
Then give path of your main installer (msi/exe) and your upgrade installer (msi/exe). And check what differences both builds are having.

Should PackageStates.php be under version control?

Whenever we clone a site on a development machine, the PackageStates.php will be rewritten shortly after and the order of entries will be all over the place, resulting in tons of changes, even though nothing has actually changed logically.
This brings up the question, should the file actually be under version control?
We experimented with ignoring it, but then, when deploying on a new machine, the site will not know which extensions to load. Which suggests to me that it shouldn't be excluded from version control. But then how should the information, which extensions to load, be transferred?
You can include the PackageStates.php to your version control.
You also can exclude it from versioning and generate it automatically during deployment process. typo3-console has a command for this:
typo3cms install:generatepackagestates
In older TYPO3 versions < 9 LTS, you have the option to install extensions based on conditions like context, host, system you can use
$GLOBALS['TYPO3_CONF_VARS']['EXT']['runtimeActivatedPackages'] = array('extension_builder','devlog');
in your AdditionalConfiguration.php.
Article about this topic at typo3blogger.de
If you have a TYPO3 composer installation, PackageStates.php is automatically generated when running "composer install":
https://docs.typo3.org/p/helhum/typo3-console/6.5/en-us/CommandReference/InstallGeneratepackagestates.html
Generates and writes typo3conf/PackageStates.php file. Goal is to not have this file in version control, but generate it on composer install.

Uninstall exceptions in InstallShield

I have a setup project with InstallShield 2010. I'm deploying a configuration file during installation. However, when uninstalled, InstallShield decides to delete it (which is normal).
The question is, is there a way to keep the file on the hard disk even after the application in uninstalled? I don't want to reconfigure the application every time the user uninstalls/installs.
Edit: I'm using MSI project.
You don't say what project type you are using. Either way, put the config file in it's own component. For MSI projects, set the Permanent attribute to true. For InstallScript projects, set the Uninstall attribute to false.

Eclipse Installs for nonexistent user

Some time ago my company migrated our Windows profiles and created new ones. I had an old installation of Eclipse Neon on the old profile.
I'm now trying to install a fresh copy of the latest eclipse and it always fails because it's trying to create folders for the old Windows profile, that doesn't exist.
Here's one of the errors it reports:
ERROR: org.eclipse.equinox.p2.artifact.repository code=1003 Unable to write to repository: file:/C:/Users/oldUser/.p2/pool.
java.io.IOException: Failed to create directory C:\Users\oldUser\.p2\pool\plugins.
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getOutputStream(SimpleArtifactRepository.java:1023)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:280)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:225)
at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:155)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:759)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:64)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
The folder C:\Users\oldUser does not exist anymore. Why isn't the installer installing it for the user I'm actually logged in as?
As far as I can tell, none of the old Eclipse Neon stuff still exists.
Turns out it had to do with a feature called "Bundle Pools". The installer, by default, has this feature turned on - it somehow knew / remembered the previous Neon installation and was trying to write to that. Turning off the "Bundle Pools" feature during the install allowed the setup to finish.