http://bugs.winehq.org/show_bug.cgi?id=29354
--- Comment #3 from Anastasius Focht focht@gmx.net 2011-12-16 14:19:21 CST --- Hello Hans,
I looked again with ORCA and it seems in silent mode "CA_ValidatePID" custom action is explicitly referenced.
Dump of "InstallExecuteSequence" table, ordered by "id":
--- snip --- SystemFolder.3D2F911E_A60A_4C07_8F7D_5306DC073E9A 1 WindowsFolder.3D2F911E_A60A_4C07_8F7D_5306DC073E9A 1 AppSearch 50 LaunchConditions 100 CA_CheckForVMMService.3D2F911E_A60A_4C07_8F7D_5306DC073E9A 1 101 VMMImmediateRebootRequired.3D2F911E_A60A_4C07_8F7D_5306DC073E9A VMM_RebootNecessary.3D2F911E_A60A_4C07_8F7D_5306DC073E9A=1 And $VMMDriver.3D2F911E_A60A_4C07_8F7D_5306DC073E9A = 3 102 CA_CheckOldInstallForAllUsers Not Installed AND (UILevel="2" OR UILevel="3" OR UILevel="4") AND Not PATCH 198 CA_ValidatePID PATCH OR (Not INSTALLED AND (UILevel="2" OR UILevel="3" OR UILevel="4")) 199 FindRelatedProducts 200 Error_FutureBuildInstalled Not Installed And (FUTUREBUILDINSTALLED) 201 ValidateProductID 700 CostInitialize 800 FileCost 900 --- snip --
"CA_ValidatePID" -> id = 199 "ValidateProductID" -> id = 700
Install works:
--- snip --- $ wine msiexec -i Virtual_PC_2007_Install.msi /q --- snip ---
Dumping "InstallUISequence", ordered by id:
--- snip --- SetupCompleteErrorDialog -3 SetupInterruptedDialog -2 SetupCompleteSuccessDialog -1 SystemFolder.3D2F911E_A60A_4C07_8F7D_5306DC073E9A 1 WindowsFolder.3D2F911E_A60A_4C07_8F7D_5306DC073E9A 1 AppSearch 50 CA_CheckOldInstallForAllUsers Not Installed 199 FindRelatedProducts 200 Error_FutureBuildInstalled FUTUREBUILDINSTALLED 201 ValidateProductID 700 CostInitialize 800 FileCost 900 CostFinalize 1000 InstallWelcomeDialog Not Installed 1001 ErrorAdminPrivilegeDialog Not AdminUser 1002 ErrorMustUninstallDialog ERROR_MUST_UNINSTALL 1003 ErrorMustUninstallTrialDialog ERROR_MUST_UNINSTALL_TRIAL 1004 ErrorMustUninstallVPC52Dialog ERROR_MUST_UNINSTALL_VPC52 1005 ErrorMustUninstallVSPreviewDialog ERROR_MUST_UNINSTALL_VS_PREVIEW 1006 ErrorUnsupportedOSDialog ERROR_UNSUPP_OS 1007 WarningUnsupportedInstallationDialog Not Installed AND ERROR_UNSUPP_INS 1008 LicenseAgreementDialog Not Installed 1009 RemoveWelcomeDialog Installed AND Not PATCH 1010 SetupProgressDialog 1011 MigrateFeatureStates 1200 --- snip ---
"ValidateProductID" -> id = 700
When you google using '+"Adding PIDRET property" +CustomerInformationDialog' keywords you find msi verbose log of someone who installed VPC 2007 on Windows:
(unicode log):
http://attachments.techguy.org/attachments/132724d1212217445/vpcinstalllog.t...
Interesting parts (compare with UI sequence tabled dumped with ORCA):
--- snip --- MSI (c) (D0:6C) [23:32:15:552]: UI Sequence table 'InstallUISequence' is present and populated. MSI (c) (D0:6C) [23:32:15:552]: Running UISequence MSI (c) (D0:6C) [23:32:15:552]: PROPERTY CHANGE: Adding EXECUTEACTION property. Its value is 'INSTALL'. ... MSI (c) (D0:6C) [23:32:15:553]: Doing action: AppSearch ... MSI (c) (D0:6C) [23:32:15:555]: Doing action: CA_CheckOldInstallForAllUsers ... MSI (c) (D0:6C) [23:32:15:586]: Doing action: FindRelatedProducts ... MSI (c) (D0:6C) [23:32:15:586]: Skipping action: Error_FutureBuildInstalled (condition is false) ... MSI (c) (D0:6C) [23:32:15:586]: Doing action: ValidateProductID Action 23:32:15: ValidateProductID. Action start 23:32:15: ValidateProductID. Action ended 23:32:15: ValidateProductID. Return value 1. MSI (c) (D0:6C) [23:32:15:587]: Doing action: CostInitialize ... MSI (c) (D0:6C) [23:32:15:589]: Doing action: CostFinalize ... MSI (c) (D0:6C) [23:32:15:592]: Doing action: InstallWelcomeDialog ... MSI (c) (D0:48) [23:32:17:093]: Doing action: CA_CheckIfWeCanInstall ... MSI (c) (D0:6C) [23:32:17:104]: Doing action: LicenseAgreementDialog ... Action 23:32:17: LicenseAgreementDialog. Dialog created MSI (c) (D0:48) [23:32:18:597]: PROPERTY CHANGE: Modifying AgreeToLicense property. Its current value is 'No'. Its new value: 'Yes'. Action 23:32:22: CustomerInformationDialog. Dialog created MSI (c) (D0:48) [23:32:23:485]: Doing action: CA_ValidatePID Action 23:32:23: CA_ValidatePID. Validating the product key Action start 23:32:23: CA_ValidatePID. MSI (c) (D0:EC) [23:32:23:486]: Invoking remote custom action. DLL: C:\Users\JOELST~1\AppData\Local\Temp\MSIF7AD.tmp, Entrypoint: ValidateProductID ... MSI (c) (D0!30) [23:32:23:629]: PROPERTY CHANGE: Adding PID property. Its value is '74216-270-1903431-41429'. MSI (c) (D0!30) [23:32:23:629]: PROPERTY CHANGE: Adding ProductID property. Its value is '74216-270-1903431-41429'. MSI (c) (D0!30) [23:32:23:629]: PROPERTY CHANGE: Adding DPID property. Its value is 'xxx'. MSI (c) (D0!30) [23:32:23:629]: PROPERTY CHANGE: Adding DigitalProductID property. Its value is 'xxx'. MSI (c) (D0!30) [23:32:23:630]: PROPERTY CHANGE: Adding PIDRET property. Its value is '0'. ... Action ended 23:32:23: CA_ValidatePID. Return value 1. MSI (c) (D0:48) [23:32:23:630]: Doing action: CA_InstallForAllUsers ... --- snip ---
That log shows that:
1) in UI install "ValidateProductID" is called before "CA_ValidatePID" due to explicit sequence entry.
2) "CA_ValidatePID" is called immediately after "CustomerInformationDialog" dialog is created.
ORCA table dump of "ControlEvent" table for "CustomerInformationDialog" shows that "CA_ValidatePID" can't be called unless the expression 'NOT ProductID AND PIDKEY AND PIDKEY<>" "' evaluates to true.
Googling further I found a hint in the following mailing list post (Wix installer):
http://sourceforge.net/mailarchive/message.php?msg_id=28023449
--- quote --- Server ValidateProductID sets ProductID respondingly:
MSI (s) (0C:E4) [15:28:07:917]: Doing action: ValidateProductID Action 15:28:07: ValidateProductID. Action start 15:28:07: ValidateProductID. MSI (s) (0C:E4) [15:28:07:918]: PROPERTY CHANGE: Adding ProductID property. Its value is 'TES-TTES-1234'. Action ended 15:28:07: ValidateProductID. Return value 1. --- quote ---
The comment explicitly mentions "Server side" and the log indeed shows "MSI (s)"
It seems there is a distinction made between MSI client vs. MSI server side.
"ValidateProductID" on server side -> "ProductID" property globally added? "ValidateProductID" on client side -> "ProductID" property not added?
Could that be the culprit?
Regards