Test case 18: Verify Windows Installer package contains Manufacturer, ProductCode, ProductLanguage, ProductName, ProductVersion (major and minor), and UpgradeCode property tags and that they are not null (Req:2.7)
Question: Is it acceptable to have multiple upgrade code entries? If one of the upgrade codes does not have a fully populated version min or version max, is that a failure?
Answer: The Upgrade table can have multiple entries, here is an example:
|
UpgradeCode |
VersionMin |
VersionMax |
Language |
Attributes |
Remarks |
ActionProperty |
|
XYZ |
1.0.1234.0 |
|
|
256 |
|
NEWPRODUCTFOUND |
|
XYZ |
1.0.1234.0 |
1.0.1234.0 |
[ProductLanguage] |
512 |
|
ANOTHERLANGUAGEFOUND |
|
XYZ |
0.0.0.0 |
1.0.1234.0 |
|
1024 |
|
UPGRADEDPRODUCTS |
During the course of installation the installer runs through each record of the Upgrade table in sequence and compares the upgrade code, product version, and language in each row to products installed on the system.
The installer checks the VersionMin and if the VersionMin is NULL, the installer tries to detect all previous versions. If the VersionMax is NULL the installer detects all product versions greater than or equal to the value specified by the VersionMin. Hence in this case both VersionMin and VersionMax must not both be null.
If the both VersionMin and VersionMax are specified the installer tries to detect all products within the range and also if the values specified for VersionMin & VersionMax equals an empty string ("") it is evaluated the same as 0.
Question: We have Update table filled in the MSI, but we don’t have any action if we find newer version of our application on the user’s computer. Will it prevent us from passing this TC?
Answer: As far as Update table is concerned, the TC 18 expects, “The Windows Installer package contained UpgradeCode, ProductVersion (VersionMin and VersionMax) property tags in the Upgrade table with the UpgradeCode, ProductVersion (VersionMin must not be null) tags not being Null in order to pass this test case and the UpgradeCode in the Upgrade table must be identical to the UpgradeCode in the Property table.”
So, as long as you have Update table filled up as expected above, you satisfy the TC 18 requirement. The goal of this requirement is actually to enable servicing and upgrading of applications. Even if the application doesn’t take advantage of this, the goal is to allow future compatibility with the OS and ongoing maintainability of the product that’s being certified.
Question: There are no “products affected by the upgrade” because there is nothing for us to upgrade. However, TC 18 states “The Windows Installer package contained UpgradeCode, ProductVersion, (VersionMin and VersionMax) property tags in the Upgrade table”.
The only way I see for us to satisfy this test case would be to fabricate a previous version and pretend to upgrade it.
Does this make sense or are we missing something?
Answer: The goal of this requirement is to enable servicing and upgrading of applications. Even if the application doesn’t take advantage of this, the goal is to allow future compatibility with the OS and ongoing maintainability of the product that’s being certified.
Resource:
Preventing an Old Package from Installing Over a Newer Version