suluhs
11-11-2002, 02:20 PM
After having a nightmare with the major upgrade, I decided to do a little experiment. This is how it goes:
MSI Project, Installshield Developer 8.0, Win2k Platform
Test Install Version 1.00.0000:
1. I created a com server with the install location [CommonFiles]. (The com server only have one method launching a messagebox with the text you passed in)
2. I created an exe that uses the com server
3. I created an installation and I called it Test Install version 1.00.0000, having one feature that has two components: the exe and the com server. I go to the advance com server setting and indicate to use relative path, and fill in the appropriate IsolatedComponent table using direct editor. I test the installation and everybody is happy.
Test Install Version 2.00.0000
1. I use the same exe and I incremented it's fileversioninfo (to simulate major upgrade)
2. I left the Com server identical, because it doesn't changed.
3. I open Test Install project, do a save as Test Install2 project so everything should be identical as the version 1.0. Then I varied ProductId, PackageId, create a major upgrade item with version inclusive 1.00 to 2.00, migrate feature states, same UpgradeCode
When I run the version 2.0 setup this is what I got:
1. The upgrade remove my V1.0 (as expected) and put all the new correct version (as expected), it also isolate my com server correctly (by copying it to the exe folder and create a .LOCAL file) but then it also wiped out the com server in the [CommonFiles]. So when I run the v2.0 exe, the windows installer self repair will detect that the com server is missing and initiate the self repair on that component. My question: Does this behavior a bug or what ?
2. If I vary the Component guid then the file reference count is wrong, which probably explain some of the posting about major upgrade and how it leaves files in the system when the product is removed. My question: Is this also a bug ?
Any comment will be much appreciated.
MSI Project, Installshield Developer 8.0, Win2k Platform
Test Install Version 1.00.0000:
1. I created a com server with the install location [CommonFiles]. (The com server only have one method launching a messagebox with the text you passed in)
2. I created an exe that uses the com server
3. I created an installation and I called it Test Install version 1.00.0000, having one feature that has two components: the exe and the com server. I go to the advance com server setting and indicate to use relative path, and fill in the appropriate IsolatedComponent table using direct editor. I test the installation and everybody is happy.
Test Install Version 2.00.0000
1. I use the same exe and I incremented it's fileversioninfo (to simulate major upgrade)
2. I left the Com server identical, because it doesn't changed.
3. I open Test Install project, do a save as Test Install2 project so everything should be identical as the version 1.0. Then I varied ProductId, PackageId, create a major upgrade item with version inclusive 1.00 to 2.00, migrate feature states, same UpgradeCode
When I run the version 2.0 setup this is what I got:
1. The upgrade remove my V1.0 (as expected) and put all the new correct version (as expected), it also isolate my com server correctly (by copying it to the exe folder and create a .LOCAL file) but then it also wiped out the com server in the [CommonFiles]. So when I run the v2.0 exe, the windows installer self repair will detect that the com server is missing and initiate the self repair on that component. My question: Does this behavior a bug or what ?
2. If I vary the Component guid then the file reference count is wrong, which probably explain some of the posting about major upgrade and how it leaves files in the system when the product is removed. My question: Is this also a bug ?
Any comment will be much appreciated.