Thanks Catalin!
Things were, indeed, out of order.
My CerberusWelcomeDlg is sequence number 82
AppSearch is sequence number 100
That is odd.
Perhaps it was because I right-clicked the PrepareDlg and Add Dialog To Squence to create my welcome dialog.
It could also be because this install script is 12 years old and nowhere near the "default project" any more
So I've used the Table Editor to move my welcome dialog just before the install dialog:
- WelcomeSequenceTableEditor.png (124.37 KiB) Viewed 5802 times
I'm using this Search action:
- SearchVersionByProductCode.png (31.77 KiB) Viewed 5802 times
Nevertheless, when upgrading from 12.2.0 to 12.2.1, the SUPPORTS_EXISTING_SERVICE_NO_CHANGE property isn't available by the time my dialog runs.
Unsure if it is relevant, but the Custom Actions screen still shows CerberusWelcomDlg happening in the wrong spot:
- WelcomeSequence.png (71.05 KiB) Viewed 5802 times
I've looked through the installer log and see another thing that might explain it:
Code: Select all
MSI (c) (A0:64) [12:50:05:303]: Doing action: AI_AppSearchEx
Action start 12:50:05: AI_AppSearchEx.
MSI (c) (A0:3C) [12:50:05:373]: Invoking remote custom action. DLL: C:\Users\ADMINI~1\AppData\Local\Temp\MSI9DCC.tmp, Entrypoint: DoAppSearchEx
MSI (c) (A0!08) [12:50:05:492]: PROPERTY CHANGE: Adding PreReqSearch_D36C9FE0826D4D2B9C2DDCAiVerMin property. Its value is '14.21.27702'.
MSI (c) (A0!08) [12:50:05:492]: PROPERTY CHANGE: Adding PreReqSearch_D36C9FE0826D4D2B9C2DDC property. Its value is '14.29.30037'.
MSI (c) (A0!08) [12:50:05:493]: PROPERTY CHANGE: Adding SUPPORTS_EXISTING_SERVICE_NO_CHANGEAiVerMin property. Its value is '12.2.0'.
MSI (c) (A0!08) [12:50:05:497]: PROPERTY CHANGE: Adding AI_PrereqsFulfilled property. Its value is '1'.
Action ended 12:50:05: AI_AppSearchEx. Return value 1.
MSI (c) (A0:64) [12:50:05:499]: Doing action: AI_DetectSoftware
Action start 12:50:05: AI_DetectSoftware.
MSI (c) (A0:80) [12:50:05:505]: Invoking remote custom action. DLL: C:\Users\ADMINI~1\AppData\Local\Temp\MSI9E98.tmp, Entrypoint: OnDetectSoftware
Action ended 12:50:06: AI_DetectSoftware. Return value 1.
MSI (c) (A0:64) [12:50:06:331]: Doing action: AI_RESTORE_AI_SETUPEXEPATH
Action start 12:50:06: AI_RESTORE_AI_SETUPEXEPATH.
Action ended 12:50:06: AI_RESTORE_AI_SETUPEXEPATH. Return value 1.
MSI (c) (A0:64) [12:50:06:332]: Doing action: FindRelatedProducts
Action start 12:50:06: FindRelatedProducts.
MSI (c) (A0:64) [12:50:06:333]: PROPERTY CHANGE: Adding OLDPRODUCTS property. Its value is '{DFC29FB0-D37E-411C-A8EC-03948B13A008}'.
MSI (c) (A0:64) [12:50:06:333]: PROPERTY CHANGE: Adding MIGRATE property. Its value is '{DFC29FB0-D37E-411C-A8EC-03948B13A008}'.
Action ended 12:50:06: FindRelatedProducts. Return value 1.
The search method I'm using requires OLDPRODUCTS to be set, but that gets set after AI_AppSearchEx is run.
Judging from later in the log, AI_AppSearchEx is responsible for setting my property. I see it running successfully much later in the log (long after my dialog has displayed and been dismissed):
Code: Select all
MSI (s) (68:10) [12:51:04:980]: Doing action: AI_AppSearchEx
Action start 12:51:04: AI_AppSearchEx.
MSI (s) (68:14) [12:51:04:986]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI86E9.tmp, Entrypoint: DoAppSearchEx
MSI (s) (68!0C) [12:51:05:030]: PROPERTY CHANGE: Adding PreReqSearch_D36C9FE0826D4D2B9C2DDCAiVerMin property. Its value is '14.21.27702'.
MSI (s) (68!0C) [12:51:05:030]: PROPERTY CHANGE: Adding PreReqSearch_D36C9FE0826D4D2B9C2DDC property. Its value is '14.29.30037'.
MSI (s) (68!0C) [12:51:05:032]: PROPERTY CHANGE: Adding SUPPORTS_EXISTING_SERVICE_NO_CHANGEAiVerMin property. Its value is '12.2.0'.
MSI (s) (68!0C) [12:51:05:032]: PROPERTY CHANGE: Adding SUPPORTS_EXISTING_SERVICE_NO_CHANGE property. Its value is '12.2.0'.
MSI (s) (68!0C) [12:51:05:038]: PROPERTY CHANGE: Adding AI_PrereqsFulfilled property. Its value is '1'.
Action ended 12:51:05: AI_AppSearchEx. Return value 1.
Can you see a way of resolving this? I really like this way of setting a property based on whether it falls between min and max versions. Is there an alternative? Can I continue changing sequence so that FindRelatedProducts happens before AI_AppSearchEx?