[Bug 29354] Microsoft Virtual PC 2007 SP1 installer fails to get past the "Product Key" dialog

wine-bugs at winehq.org wine-bugs at winehq.org
Fri Dec 16 14:19:21 CST 2011


http://bugs.winehq.org/show_bug.cgi?id=29354

--- Comment #3 from Anastasius Focht <focht at 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.txt

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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list