cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
nunocenteio
Level 3

Minor upgrade doesn't replace files?

Hi,

I have another problem. This is the scenario:
- My ProductVersion is 1.0.0.0
- It installs several files each with version 1.0.0.0

The QA guy of the company (or the client) installs version 1.0.0.0 and detects a bug on the software. We fix the assemblies but they don't get a new version, that is, they continue with version 1.0.0.0.

I build a new setup (with the save ProductVersion). When installing it detects a minor upgrade and asks if the user wants to upgrade. What happens is that those assemblies don't get updated.

I've set the "Always overwrite" flag in all assemblies.

What am I doing wrong?

Thanks
Labels (1)
0 Kudos
(7) Replies
Kelter
Level 10

Take a look at the log file after running the installation. Start with the InstallValidate action as that will tell you whether or not it's trying to install the relevant components. If the action on all the components is "local" (or perhaps "reinstall" in your scenario), then look for "FileCopy" in the log. You'll see it being called for every file that is set to be installed and the line right after FileCopy(...) will tell you what action was actually taken on that file and why.

that should get you somewhere, anyways. The "Always Overwrite" should work, though. i've used it before successfully.
0 Kudos
nunocenteio
Level 3

Thanks.

The problem is that the Action is Null:

Action start 15:29:10: InstallValidate.
MSI (s) (44:54) [15:29:10:310]: Feature: OneConsole; Installed: Advertise; Request: Reinstall; Action: Reinstall
MSI (s) (44:54) [15:29:10:310]: Component: CustomAction; Installed: Local; Request: Null; Action: Null
MSI (s) (44:54) [15:29:10:310]: Component: __PersistInstallationName65; Installed: Null; Request: Null; Action: Null
MSI (s) (44:54) [15:29:10:310]: Component: AllOtherFiles; Installed: Local; Request: Null; Action: Null

The problematic file is under component "CustomAction".
0 Kudos
Kelter
Level 10

For some reason the installation thinks the feature is advertised, not installed.

Make sure you have a clean machine, and then replicate this situation. Without seeing the whole log, i'll have a hard time going any deeper on this.
0 Kudos
nunocenteio
Level 3

Well, I've made one test: I've renamed the problematic assembly and then performed a "Repair". In this case the file is copied again.
I switched back to the old file, performed a repair, and nothing happened 😞

I've attached the log of this last "Repair". Once again a have a "Advertise" and no FileCopy 😞

(...)
MSI (s) (34:8C) [15:44:27:799]: Doing action: InstallValidate
Action 15:44:27: InstallValidate. Validating install
Action start 15:44:27: InstallValidate.
MSI (s) (34:8C) [15:44:27:800]: PROPERTY CHANGE: Deleting MsiRestartManagerSessionKey property. Its current value is '81bc4313338d324d83c9a8e614a7f5d8'.
MSI (s) (34:8C) [15:44:27:800]: Feature: OneConsole; Installed: Advertise; Request: Reinstall; Action: Reinstall
MSI (s) (34:8C) [15:44:27:800]: Component: CustomAction; Installed: Local; Request: Null; Action: Null
(...)
MSI (s) (34:8C) [15:44:28:224]: Doing action: InstallFiles
Action 15:44:28: InstallFiles. Copying new files
Action start 15:44:28: InstallFiles.
MSI (s) (34:8C) [15:44:28:227]: Note: 1: 2205 2: 3: MsiPatchOldAssemblyFile
MSI (s) (34:8C) [15:44:28:227]: Note: 1: 2228 2: 3: MsiPatchOldAssemblyFile 4: SELECT `MsiPatchOldAssemblyFile`.`Assembly_` FROM `MsiPatchOldAssemblyFile` WHERE `MsiPatchOldAssemblyFile`.`File_` = ?
MSI (s) (34:8C) [15:44:28:228]: Note: 1: 2205 2: 3: MsiSFCBypass
MSI (s) (34:8C) [15:44:28:228]: Note: 1: 2228 2: 3: MsiSFCBypass 4: SELECT `File_` FROM `MsiSFCBypass` WHERE `File_` = ?
MSI (s) (34:8C) [15:44:28:228]: Note: 1: 2205 2: 3: MsiPatchHeaders
MSI (s) (34:8C) [15:44:28:228]: Note: 1: 2228 2: 3: MsiPatchHeaders 4: SELECT `Header` FROM `MsiPatchHeaders` WHERE `StreamRef` = ?
Action ended 15:44:28: InstallFiles. Return value 1.

Can you help?
0 Kudos
Kelter
Level 10

This is a shot in the dark, but try setting REINSTALLMODETEXT to vemus.

Also, after the installation completes, if you do a "modify" and then look at the feature selection tree in the UI, is that showing that the state of the OneConsole feature is advertised or installed?
0 Kudos
nunocenteio
Level 3

Well, I've disabled Advertising for the features and it started working.
I think that the multi-feature instance is messing something 😞
0 Kudos
Kelter
Level 10

What do you mean by multi-feature instance?

Actually, perhaps the first thing i should have picked up on is that you seem to be using dynamic file linking. Because of this, you can only use minor upgrades if you use patch optimization. This is because dynamic file linking creates components on the fly at build time. The component GUIDs must match up with those of the package being upgraded in order for the costing operations to know what is going on. Patch optimization points the build at the previous package so that it can properly recycle the old component GUIDs.
0 Kudos