http://bugs.winehq.org/show_bug.cgi?id=12486
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #12 from James Hawkins truiken@gmail.com 2008-06-27 10:33:31 --- (In reply to comment #11)
I recall the msxml log telling me that it did not support nodes with node type 8 (comments node), and the installation failed thereafter, but that was some time ago. I don't know if our msxml was updated since then. The Office installer stores a digital signature in a xml file inside a comment. I think that the installer then reads the sig and validates something.
No, the exact problem is stated in comment #6.
--- Comment #13 from Anastasius Focht focht@gmx.net 2008-07-02 05:10:02 --- Hello,
is there any decision made yet to fork/replace/bugger libxml? I don't see any argument to convince the libxml guys for incorporating such breaking "feature".
The stripping of \r in \r\n sequences and handling of other format characters when parsing is mandated by the XML specification - that's how they implemented it.
http://www.w3.org/TR/2006/REC-xml-20060816/#sec-line-ends http://www.w3.org/TR/2006/REC-xml-20060816/#sec-white-space
The office installer uses a custom variant of signed XML, calculating a hash of document element and all child data (usually all stuff between <Setup></Setup>). As already pointed out, all the line ends and formatting have to be *kept* to let the installer's XML verification succeed.
Just for illustration, the XML buffer dumps before being given to hash calculation:
--- snip windows xml dump --- +00 3C 00 53 00|65 00 74 00|75 00 70 00|20 00 49 00| <.S.e.t.u.p. .I. +10 64 00 3D 00|22 00 45 00|78 00 63 00|65 00 6C 00| d.=.".E.x.c.e.l. +20 2E 00 64 00|65 00 2D 00|64 00 65 00|22 00 20 00| ..d.e.-.d.e.". . +30 54 00 79 00|70 00 65 00|3D 00 22 00|41 00 64 00| T.y.p.e.=.".A.d. +40 64 00 4F 00|6E 00 22 00|20 00 4B 00|65 00 79 00| d.O.n.". .K.e.y. +50 77 00 6F 00|72 00 64 00|3D 00 22 00|45 00 78 00| w.o.r.d.=.".E.x. +60 63 00 65 00|6C 00 4D 00|55 00 49 00|22 00 20 00| c.e.l.M.U.I.". . +70 43 00 75 00|6C 00 74 00|75 00 72 00|65 00 3D 00| C.u.l.t.u.r.e.=. +80 22 00 64 00|65 00 2D 00|64 00 65 00|22 00 3E 00| ".d.e.-.d.e.".>. +90 0D 00 0A 00|09 00 3C 00|4F 00 70 00|74 00 69 00| ......<.O.p.t.i. .. --- snip windows xml dump ---
0x0D, 0x0A, 0x09, 0x20
This is what it looks like in libxml (keep format): NOTE: the memory dump is from another XML file but it should give the idea:
--- snip wine xml dump --- +00 3C 00 53 00|65 00 74 00|75 00 70 00|20 00 49 00| <.S.e.t.u.p. .I. +10 64 00 3D 00|22 00 50 00|6F 00 77 00|65 00 72 00| d.=.".P.o.w.e.r. +20 50 00 6F 00|69 00 6E 00|74 00 2E 00|64 00 65 00| P.o.i.n.t...d.e. +30 2D 00 64 00|65 00 22 00|20 00 54 00|79 00 70 00| -.d.e.". .T.y.p. +40 65 00 3D 00|22 00 41 00|64 00 64 00|4F 00 6E 00| e.=.".A.d.d.O.n. +50 22 00 20 00|4B 00 65 00|79 00 77 00|6F 00 72 00| ". .K.e.y.w.o.r. +60 64 00 3D 00|22 00 50 00|6F 00 77 00|65 00 72 00| d.=.".P.o.w.e.r. +70 50 00 6F 00|69 00 6E 00|74 00 4D 00|55 00 49 00| P.o.i.n.t.M.U.I. +80 22 00 20 00|43 00 75 00|6C 00 74 00|75 00 72 00| ". .C.u.l.t.u.r. +90 65 00 3D 00|22 00 64 00|65 00 2D 00|64 00 65 00| e.=.".d.e.-.d.e. +A0 22 00 3E 00|0A 00 20 00|20 00 3C 00|4F 00 70 00| ".>... . .<.O.p. .. --- snip wine xml dump ---
0x0A, 0x20
Regards