cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
gomochainstall
Level 6

Creating a major upgrade on each Azure DevOps build

Hello everyone,

We create multiple builds per day and I want to create an installer for each build, each build should also be able to be upgraded from, that's why I want to use a major upgrade. Our product consists out of multiple IIS websites and a BizTalk installation, so I cannot use regular patches. If I understand correctly, InstallShield doesn't overwrite any assemblies if there is a small codechange without the assembly number being increased.

I was wondering if it is possible to create a major upgrade for each build I'm doing using Azure DevOps. Changing the Upgrade Code should be enough right? Can I pass in some sort of commandline argument into the InstallShield build task to do this?

 

 

Labels (1)
0 Kudos
(7) Replies
varul
Revenera Moderator Revenera Moderator
Revenera Moderator

Hi @gomochainstall 

Yes, you can do it, however you need to change the product code for each build and you should have a major upgrade entry in your ism with same upgrade code. Dont change the upgrade code, if we change the upgrade code then every time we need to change the same in upgrade view as well.

Refer below Kb link on how to configure major upgrade

https://community.flexera.com/t5/InstallShield-Knowledge-Base/How-to-Configure-a-Major-Upgrade/ta-p/193052

You can also refer our automation interface object if you want to automate the product code change and build.

https://community.flexera.com/t5/InstallShield-Knowledge-Base/How-to-use-Python-with-the-Installshield-Automation-Interface/ta-p/179044

https://community.flexera.com/t5/InstallShield-Knowledge-Base/Create-a-Powershell-CustomAction-using-Automation-Interface/ta-p/184098


https://community.flexera.com/t5/InstallShield-Knowledge-Base/How-to-Update-All-Components-Using-the-Automation-Interface/ta-p/5592

Sample Vbs Code:
'Path to ism file

sPath = "C:\InstallShield 2021 Projects\Test.ism"

'creating object for IS2021 (for IS2022 you need to change ISWiAuto28)

Set pProject = createObject("ISWiAuto27.ISWiProject")


'Opening the ism file

pProject.OpenProject sPath, True

'set project version to ism

pProject.ProductVersion = "1.0.1"

pProject.ProductCode="{AA6E6AAB-32DB-4CD6-B256-B46D0DDB1C51}"

'set project Company name(Publisher) to ism

pProject.CompanyName="Revenera"

'set the prod configuration which exists

Set prodconf = pProject.ISWiProductConfigs("Product Configuration 1")

'set the Release which exists

Set rel = prodconf.ISWIReleases.Item("Release 1")


'rel.SignatureDescription = "test"
pProject.SaveProject

'Building the specific release
rel.Build()

 

If you want to change the product code using cmd line:

Change product code using iscmdbld.exe
======================================

<path to iscmdbld.exe>ISCmdBld.exe -p <path to ism> -y 2.0.1 -z ProductVersionMajor=2.0 -z ProductName="TestProject" -z ProductCode={85F9C84B-28AA-FB14-3FFE-Z0298G2B45G6}

You can refer help document for more details about iscmdbld.exe

https://docs.revenera.com/installshield28helplib/helplibrary/ISCmdBldParam.htm

0 Kudos

So if I understand correctly, I need to have at least one major upgrade configured in my project. Then I can re-use that upgrade code on each upgrade as long as I change the product code. Can you confirm? 

What is confusing to me right now is that in your commandline example you don't mention the upgrade code, so how does installshield know whether it's a major upgrade? Or will it assume that there is a major upgrade because the product code changed?

0 Kudos

@gomochainstall Yes you are right, Make sure you configure the product code and the product version properly

And your upgrade entry should be configured for any version and the upgrade code should be same,  if you change a upgrade code by mistake then you need to create a one more major upgrade entry for that specific upgrade code.

0 Kudos

@varul I have it setup exactly like that, changed the product code but now it installed two versions of my software next to each other. This is not what I want, what I want is that the old version is completely overwritten by the new version. Why is this happening?

From my understanding from the documentation, I have to change the upgrade code and not the product code, because changing the product code will cause Windows to see the software as a different product. 

Uninstalling the old version doesn't do anything, except for executing the customactions that are done when REMOVE ~= ALL.

0 Kudos

Hi @gomochainstall :

You need to create a major upgrade entry with your old installed versions upgrade, if installer version upgrade code is (abc-7dsfne-dsd) and newly created versions upgrade is different (mnb-erei8nd-dsre) then you will see this issue, 

Please refer below KB on how to configure major upgrade,

https://community.flexera.com/t5/InstallShield-Knowledge-Base/How-to-Configure-a-Major-Upgrade/ta-p/193052

KB article on major upgrade with 2 ARP entry

https://community.flexera.com/t5/InstallShield-Knowledge-Base/Major-upgrade-leaves-2-entries-in-Programs-and-Features/ta-p/4325

0 Kudos

But then I cannot use this together with the commandline argument. Here is my usecase:

1. I automatically generate a guid before the InstallShield build task. 

2. I execute the InstallShield build task using the generated guid as a product code. -v -z ProductCode={$(PlatformInstallerGuid)}

You're saying that I need to have a major upgrade which will contain that generated guid, but I cannot enter that using the commandline, so how is that supposed to work? I checked that 'How to configure a major upgrade' but it doesn't match my usecase as I want to create a installer on each build. So if I have 5 builds on a day I do not know which of the 5 builds is installed previously.  

I tried reading the 'InstallScript wrapper' work around, but the knowledge article cannot be found: https://flexeracommunity.force.com/customer/articles/en_US/HOWTO/Q212514

0 Kudos

Hi @gomochainstall 

 which Guid you are generating and passing to installer product code GUID or upgrade code. if you are generating and passing an product code it wont affect the major upgrade.

You can generate and pass the product code GUID, but the upgrade code should not change,

Please first try with a sample project and see how major upgrade work for your use case, Later you can change the product code using command line using script or through cmdlet iscmdbl.exe 

0 Kudos