Jump to content


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.
Photo

Minor upgrade using msi where msp already applied


2 replies to this topic

vishnub

vishnub
  • Full Members
  • 63 posts

Posted 14 November 2009 - 12:30

Hi All,
I have earlier version (1.0.0.0) of my product in .msi format and for that I
delivered patch as .msp with version 1.0.1.0.

I generated patch by comparing two msi's (1.0.0.0 & 1.0.1.0), where existing
binaries are modified, no new files added.
In PatchTemplate.pcp, I updated FileSequenceStart value in ImageFamilies
table as per MSDN
(http://msdn.microsof...215(VS.85).aspx)
[From above link] To ensure this, the value in this field must be
greater than all sequence numbers used in previous patches or in the original
installation package.

So, I got the value of LastSequence from Media table of latest msi (1.0.1.0)
and incremented it by 1 and mentioned the value in FileSequenceStart in PCP
file.
.msp generated using InstallShield IDE's Patch Design does the same.

So for example,
- I have 10 files in 1.0.0.0 msi with a.exe's file sequence as 8
- Modified a.exe in new msi (1.0.1.0) and no new files added.
- LastSequence value in Media table of 1.0.10 msi remains 10.
- Updated pcp with FileSequenceStart value in ImageFamilies table as 11 (10
from LastSequence of new msi + 1) as per MSDN.
- Now in msp, a.exe's file sequence was modified to 11 (this can be viewed
using Orca, by Transform -> View Patch menu with 1.0.1.0 msp applied over
1.0.0.0 msi)
- When user installs 1.0.0.0 msi & 1.0.1.0 msp, then a.exe's sequence in
the cached installer will be 11 (my assumption).

Now I generate a new msi of version 2.0.0.0 with no new files added, still
LastSequence in Media table is 10 (a.exe has file sequence as 8).
- Invoke 2.0.0.0 msi with command line as
msiexec.exe /i myproduct.msi REINSTALL=vomus REINSTALL=ALL /l*v
"C:\myproduct_2.log"
- Here file with sequence less than 10 are upgraded except a.exe
- In verbose msi log, i see filecopy action for a.exe says
Overwrite; Won't patch; Existing file is of an equal version
- I doubt this is because of file sequencing for a.exe got modified in msp
as 11 and 2.0.0.0 msi has LastSequence in Media table has value as 10.

Please let me know
- My assumption is correct or something else is cause this issue.
- Is there any issue in my PCP update for FileSequenceStart value.
- How can I overcome this issue now, since 1.0.0.0 msi & 1.0.1.0 is already
delivered to customer.

Note: Newly added custom actions in 2.0.0.0 msi, which is not getting executed and throwing error 1723. Thing to be note is msi has the custom action, but it considers dll in binary table doesn't have. When I invoke same msi as fresh installation or install 2.0.0.0 msi over 1.0.0.0 msi as minor upgrade without having .msp in between, it works. Fails only when I have .msp installed in between.

Any help will be highly appreciated.

Thanks,
Vishnu

VBScab

VBScab
  • Full Members
  • 436 posts

Posted 16 November 2009 - 09:35

Irrespective of the patch sequencing, has A.EXE's actual file version been incremented? If it hasn't, Windows Installer versioning rules will mean that it won't be overwritten. You can override that behaviour by setting the component to always overwrite.
- 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.

vishnub

vishnub
  • Full Members
  • 63 posts

Posted 16 November 2009 - 10:12

Hi VBScab,
Thanks for your response, i forgot to mention that.
Yes, i am updating the version of the file (a.exe) as 2.0.0.0, so as per versioning rule, it should get upgraded.

Thanks,
Vishnu