This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
MSI doesn't update files
Started by
Romain
, Oct 27 2010 17:28
9 replies to this topic
Posted 27 October 2010 - 17:28
Hello,
I would like to update a product with msi version 1.0.0.0 to a new one v 1.0.0.1 but from several weeks, it doesn't work.
I change product and package guid and the 4th digit of the version
I use IS 2011 to generate the installer
When I use the setup.exe, I see in the log
MSI © (18:44) [18:09:18:283]: Command Line: REINSTALL=ALL REINSTALLMODE=vomus IS_MINOR_UPGRADE=1 TRANSFORMS=1033.MST SETUPEXEDIR=XXXXX SETUPEXENAME=setup.exe CURRENTDIRECTORY=XXXXXXX CLIENTUILEVEL=0 CLIENTPROCESSID=2072
I can see that the update is detected as minor upgrade instead of major update.
Is it normal ?
I have no error during the installation but the new files are not updated and the version has been changed in Add/Remove Prog
I have forced the file version to 65535.0.0.0 in the file table.
I have filled the Upgrade table with VersionMax = 1.0.0.1 (for the latest version) attribute 256
When I use the properties MSIENFORCEUPGRADECOMPONENTRULES and MSIUNINSTALLSUPERSEDEDCOMPONENTS it works if there is no important changement in my msi
How can I update my program in all case and be sure the files are overwriten
Thank you for you help
Romain
I would like to update a product with msi version 1.0.0.0 to a new one v 1.0.0.1 but from several weeks, it doesn't work.
I change product and package guid and the 4th digit of the version
I use IS 2011 to generate the installer
When I use the setup.exe, I see in the log
MSI © (18:44) [18:09:18:283]: Command Line: REINSTALL=ALL REINSTALLMODE=vomus IS_MINOR_UPGRADE=1 TRANSFORMS=1033.MST SETUPEXEDIR=XXXXX SETUPEXENAME=setup.exe CURRENTDIRECTORY=XXXXXXX CLIENTUILEVEL=0 CLIENTPROCESSID=2072
I can see that the update is detected as minor upgrade instead of major update.
Is it normal ?
I have no error during the installation but the new files are not updated and the version has been changed in Add/Remove Prog
I have forced the file version to 65535.0.0.0 in the file table.
I have filled the Upgrade table with VersionMax = 1.0.0.1 (for the latest version) attribute 256
When I use the properties MSIENFORCEUPGRADECOMPONENTRULES and MSIUNINSTALLSUPERSEDEDCOMPONENTS it works if there is no important changement in my msi
How can I update my program in all case and be sure the files are overwriten
Thank you for you help
Romain
Posted 27 October 2010 - 17:43
Check this MSDN article about ProductVersion
- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.
Posted 28 October 2010 - 09:09
Thank you for your response
I already know the msi use only 3 number for a version
In one setup, when I use MSIENFORCEUPGRADECOMPONENTRULES it works fine
But on another I have error 2771
The setup.exe already detect a version change
Is it possible to force detection of the 4th number of the version inside msi by forcing a msi property ?
Thank you for your help
Romain
I already know the msi use only 3 number for a version
In one setup, when I use MSIENFORCEUPGRADECOMPONENTRULES it works fine
But on another I have error 2771
The setup.exe already detect a version change
Is it possible to force detection of the 4th number of the version inside msi by forcing a msi property ?
Thank you for your help
Romain
Posted 28 October 2010 - 10:15
QUOTE |
In one setup, when I use MSIENFORCEUPGRADECOMPONENTRULES it works fine But on another I have error 2771 |
If you're performing a minor update you must comply with a couple of upgrade rules, for instance you can't remove a component from a feature etc. If you comply with these rules, the update will work. If you don't you get error 2771.
QUOTE |
Is it possible to force detection of the 4th number of the version inside msi by forcing a msi property ? |
Not that I'm aware of. And you shouldn't try to tweak and trick Windows Installer in order to cover a broken version numbering scheme - you should fix your numbers instead. Yes, I know this can be annoying that WIndows Installer ignored the forth field of the ProductVersion, but we have to live with it.
Stefan Krüger
InstallSite.org twitter facebook
Posted 28 October 2010 - 13:32
Thank you Stefan.
I finally change my MSI version to have 3 digits. I don't want to have others problems.
Bye
Romain
I finally change my MSI version to have 3 digits. I don't want to have others problems.
Bye
Romain
Posted 16 November 2010 - 14:03
Bad news
I have the same problem with 3 numbers for the version.
The setup.exe detect that my product need to be upgraded and finished with no error but the files are not updated.
The product code is not changed. I changed only package code and version and feature tree.
I have activated the log with debugview and I see the error.
SELMGR: ComponentId '{5A90D7F8-8217-4DA0-7BAA-658FA480DC3A}' is registered to feature 'XXX', but is not present in the Component table. Removal of components from a feature is not supported!
The schema is 405
I don't want to make a major upgrade but a minor upgrade and clean the unused components.
How can I do that ?
Thank you
Romain
I have the same problem with 3 numbers for the version.
The setup.exe detect that my product need to be upgraded and finished with no error but the files are not updated.
The product code is not changed. I changed only package code and version and feature tree.
I have activated the log with debugview and I see the error.
SELMGR: ComponentId '{5A90D7F8-8217-4DA0-7BAA-658FA480DC3A}' is registered to feature 'XXX', but is not present in the Component table. Removal of components from a feature is not supported!
The schema is 405
I don't want to make a major upgrade but a minor upgrade and clean the unused components.
How can I do that ?
Thank you
Romain
Posted 16 November 2010 - 14:34
In a Minor Update you are not allowed to remove components from the project (nor move them between features and many other restrictions). A Major Upgrade may be the cleanest solution. Why don't you want to create a Major Upgrade?
In a Minor Update you can remove a component from the target system. You must keep the component in your setup, but you can set its condition to 0 (and set the "transitive" or "re-evaluate condition" flag to true). Now this component won't be installed, and if it was installed it will be removed. If the component includes large files you can replace them with 1 byte dummies so reduce the size of your setup media.
In a Minor Update you can remove a component from the target system. You must keep the component in your setup, but you can set its condition to 0 (and set the "transitive" or "re-evaluate condition" flag to true). Now this component won't be installed, and if it was installed it will be removed. If the component includes large files you can replace them with 1 byte dummies so reduce the size of your setup media.
Stefan Krüger
InstallSite.org twitter facebook
Posted 16 November 2010 - 15:13
thank you for your response
It is not easy for me to change the product code because they are all referenced in software updater. If I change product code I need to change the way of detection of the installed product by using the upgrade code.
I already know the technique by adding a empty component with 0 in the condition but I don't know what are the removed component because they are generated with Installshield 2011 when a add a folder.
I have read another technique here
http://blogs.msdn.co.../19/482761.aspx
but I don't really understand it
It is not easy for me to change the product code because they are all referenced in software updater. If I change product code I need to change the way of detection of the installed product by using the upgrade code.
I already know the technique by adding a empty component with 0 in the condition but I don't know what are the removed component because they are generated with Installshield 2011 when a add a folder.
I have read another technique here
http://blogs.msdn.co.../19/482761.aspx
but I don't really understand it
Posted 17 November 2010 - 15:32
ok, I could do that by detecting the components that are removed from the previous version but I need to store all the component guid that have been used by any old package and automate a process to create them inside the msi.
I must be sure to update all previous package to new one.
It is easy when we have few package and components. In my case I have about 1000 components and one package per day.
I am trying to change my update process by changing the product code
But now when I start the new package over a previous package, the installer doesn't detected my previously installed package and I have 2 products installed with the same upgrade code.
Did I forget anything?
Romain
I must be sure to update all previous package to new one.
It is easy when we have few package and components. In my case I have about 1000 components and one package per day.
I am trying to change my update process by changing the product code
But now when I start the new package over a previous package, the installer doesn't detected my previously installed package and I have 2 products installed with the same upgrade code.
Did I forget anything?
Romain