[Bug 9664] Missing icon during MS Office 2000 installation

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Mar 2 15:31:42 CST 2010


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





--- Comment #24 from Anastasius Focht <focht at gmx.net>  2010-03-02 15:31:41 ---
Hello,

thanks for the german Office2K installation package, it was a matter of minutes
to track it down ;-)

Fortunately Microsoft installer swiss army knife "ORCA" came once again to
help.

Using ORCA's dialog preview feature one can quickly reproduce the problem
(missing image on pushbutton control):

Load DATA1.MSI with ORCA.
Menu: Tools -> Dialog Preview -> choose "ReadyToInstall" Dialog

You see the second "Customize" pushbutton image is indeed missing.

NOTE: If you choose "done" in dialog preview, the dialog gets ghosted (never
closes). This seems to be another wine bug.

---

Dumping the "Control" table for "ReadyToInstall" dialog reveals the following:

--- snip ---
...
Dialog_    Control    Type    X    Y    Width    Height    Attributes   
Property    Text    Control_Next    Help
s0    s0    s0    i2    i2    i2    i2    I4    S0    L0    S0    L0

ReadyToInstall    BlackBar    Bitmap    1    1    449    4    262145       
BlackBar        
ReadyToInstall    CornerGraphic    Bitmap    1    4    126    48    262145     
  CornerGraphic    InstallNowText    
ReadyToInstall    WhiteBar    Bitmap    1    1    126    280    262145       
WhiteBar    CornerGraphic    
ReadyToInstall    Back    PushButton    317    285    62    18    3        <<
&Zurück    Cancel    
ReadyToInstall    Cancel    PushButton    204    285    62    18    3       
Abbrechen    HelpButton    
ReadyToInstall    BarLabelSetup    Text    4    57    121    18    65539       
{\Tahoma8BlackBold}SETUP        
ReadyToInstall    BLCollecting    Text    4    75    121    25    65539       
{\Tahoma8Black}Kundeninformationen        
ReadyToInstall    BLEULA    Text    4    100    121    25    65539       
{\Tahoma8Black}Lizenzierung und Support        
ReadyToInstall    BLInstalling    Text    4    150    121    25    65539       
{\Tahoma8Black}[ProductNameBase] wird installiert        
ReadyToInstall    BLReady    Text    4    125    121    25    65539       
{\Tahoma8BlackBold}Zur Installation bereit        
ReadyToInstall    BottomLine    Line    1    279    449    2    1        line   
ReadyToInstall    HelpButton    PushButton    138    285    62    18    3      
 &Hilfe    WhiteBar    
ReadyToInstall    Next    PushButton    383    285    62    18    1       
&Weiter >>    Back    
ReadyToInstall    Label4    Text    139    12    305    25    65539       
{\TahomaBold8}Das Setup-Programm ist bereit, [ProductName] zu installieren.     
ReadyToInstall    Label25    Text    139    143    305    24    2       
{\Tahoma8Black}...oder klicken Sie auf "Benutzerdefiniert" und machen Sie
weitere Angaben zu Ihrer [ProductNameBase]-Installation.        
ReadyToInstall    Label8    Text    139    38    305    22    2       
{\Tahoma8Black}Klicken Sie auf "Jetzt installieren", um mit der Installation
von [ProductNameBase] zu beginnen.        
ReadyToInstall    InstallNowText    Text    192    60    252    12    65539    
   {\TahomaBold8}[TYPICALINSTALLTEXT]    InstallNow    
ReadyToInstall    CustomInstallText    Text    192    179    252    37    65539
       {\Tahoma8Black}[CUSTOMINSTALLDESCRIPTION]        
ReadyToInstall    Customize    PushButton    139    167    45    45    7864323 
      {\Tahoma8Black}CustomIcon    Next    Benutzerdefiniert|
ReadyToInstall    CustomizeText    Text    192    167    252    12    65539    
   {\TahomaBold8}[CUSTOMINSTALLTEXT]    Customize    
ReadyToInstall    IEInstallNoPrevText    Text    192    72    252    13   
65539        {\Tahoma8Black}[IEInstallNowText]        
ReadyToInstall    IEInstallText    Text    192    83    252    13    65539     
  {\Tahoma8Black}[IEInstallNowText]        
ReadyToInstall    InstallNow    PushButton    139    60    45    45    7864323 
      TypicalIcon    CustomizeText    Typisch|
ReadyToInstall    Label25Prop    Text    139    143    305    24    2       
{\Tahoma8Black}[CUSTOMINSTALLHEADER]        
ReadyToInstall    Label8c    Text    139    38    305    22    2       
{\Tahoma8Black}Klicken Sie auf "Jetzt aktualisieren", um mit der Installation
von [ProductNameBase] zu beginnen.        
ReadyToInstall    Label8cProp    Text    139    38    305    22    2       
{\Tahoma8Black}[TYPICALUPGRADEHEADER]        
ReadyToInstall    Label8Prop    Text    139    38    305    22    2       
{\Tahoma8Black}[TYPICALINSTALLHEADER]        
ReadyToInstall    TypicalInstallText    Text    192    72    252    37    65539
       {\Tahoma8Black}[ProductNameNonQualifiedShort] nach
[DefaultInstallLocation] installieren        
ReadyToInstall    TypicalInstallText2    Text    192    83    252    37   
65539        [ProductNameNonQualifiedShort] nach [DefaultInstallLocation]
installieren        
ReadyToInstall    TypicalInstallText3    Text    192    94    252    37   
65539        [ProductNameNonQualifiedShort] nach [DefaultInstallLocation]
installieren        
ReadyToInstall    TypicalInstallTextProp    Text    192    72    252    37   
65539        {\Tahoma8Black}[TYPICALINSTALLDESCRIPTION]        
ReadyToInstall    TypicalRemovePreviousText    Text    192    72    252    12  
 65539        {\Tahoma8Black}Ältere Versionen von [ProductNameBase] entfernen   
ReadyToInstall    UpgradeNowText    Text    192    60    252    12    65539    
   {\TahomaBold8}[TYPICALUPGRADETEXT]        
...
--- snip ---

Tracing the "good" case for "InstallNow" pushbutton control:

--- snip ---
...
0045:trace:msi:msi_dialog_button_control 0x610d30 0x615f40
0045:trace:msi:msi_dialog_add_control L"BUTTON", L"InstallNow", 00780003,
L"TypicalIcon", 00010040
...
0045:Call user32.CreateWindowExW(00000000,686c31ee L"BUTTON",00619f98
L"TypicalIcon",50010040,000000b9,00000050,0000003c,0000003c,000903e6,00000000,00000000,00000000)
ret=686622d8 
...
0045:trace:msi:msi_dialog_create_window Dialog L"ReadyToInstall" control
L"TypicalIcon" hwnd 0x3032c 
...
0045:trace:msi:msi_load_image 0x19b098 L"TypicalIcon" 48 48 00000010 
...
0045:trace:msi:MSI_DatabaseOpenViewW L"select * from Binary where `Name` =
'TypicalIcon'" 0x32e298 
...
0045:Call KERNEL32.lstrlenW(0061a3d8 L"Binary.TypicalIcon") ret=686a4d79
...
0045:trace:msi:db_get_raw_stream
L"\430b\4131\4735\3f7e\44fc\41ac\43e4\4192\4472" 
...
0045:Call shlwapi.SHCreateStreamOnFileW(0061a108
L"C:\\users\\focht\\Temp\\msi7230.tmp",00000012,0032e274) ret=686906ea 
...
0045:Call user32.LoadImageW(00000000,0061a108
L"C:\\users\\focht\\Temp\\msi7230.tmp",00000001,00000030,00000030,00000010)
ret=68662622
...
0045:Ret  user32.LoadImageW() retval=00060328 ret=68662622 
...
0045:Call KERNEL32.DeleteFileW(0061a108 L"C:\\users\\focht\\Temp\\msi7230.tmp")
ret=6866263e
...
0045:Call window proc 0x685c0e41
(hwnd=0x3032c,msg=BM_SETIMAGE,wp=00000001,lp=00060328)
--- snip ---

Tracing the "bad" case for "Customize" pushbutton control:

--- snip ---
...
0045:trace:msi:msi_dialog_button_control 0x610d30 0x615f40
0045:trace:msi:msi_dialog_add_control L"BUTTON", L"Customize", 00780003,
L"{\\Tahoma8Black}CustomIcon", 00010040
...
0045:Call user32.CreateWindowExW(00000000,686c31ee L"BUTTON",0061927e
L"CustomIcon",50010040,000000b9,000000df,0000003c,0000003c,000903e6,00000000,00000000,00000000)
ret=686622d8 
...
0045:trace:msi:msi_dialog_create_window Dialog L"ReadyToInstall" control
L"{\\Tahoma8Black}CustomIcon" hwnd 0x10034c 
...
0045:trace:msi:msi_load_image 0x19b098 L"{\\Tahoma8Black}CustomIcon" 48 48
00000010 
...
0045:trace:msi:MSI_DatabaseOpenViewW L"select * from Binary where `Name` =
'{\\Tahoma8Black}CustomIcon'" 0x32e298 
...
0045:Call window proc 0x685c0e41
(hwnd=0x10034c,msg=BM_SETIMAGE,wp=00000001,lp=00000000)
--- snip ---

Wine must strip any RTF-ismns from string/text fields that are potentially used
as lookup keys in tables (example: stream names in binary table).

E.g. text field "{\Tahoma8Black}CustomIcon" should become "CustomIcon" before
lookup/query expression.

Also it would be helpful if an ERR is printed in case the icon resource can't
be loaded - similar what's being done in
dlls/dialog.c:msi_dialog_bitmap_control().

dlls/dialog.c:msi_dialog_button_control -> msi_load_icon -> msi_load_image

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