I finally got it working this morning.

Using the same code as in Brian's below post throws an error before proceeding 
to rollback & generates the following in the log:

Action 17:18:59: ExecXmlConfig. 
MSI (s) (8C:C0) [17:18:59:379]: Executing op: 
CustomActionSchedule(Action=ExecXmlConfig,ActionType=3073,Source=BinaryData,Target=ExecXmlConfig,CustomActionData=1€C:\Program
 Files (x86)\Google\Google SketchUp 
6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml€3€/IESInterface/IESveLocation€€€C:\Program
 Files (x86)\IES\VE 59\apps€0)
MSI (s) (8C:C0) [17:18:59:379]: Creating MSIHANDLE (42) of type 790536 for 
thread 960
MSI (s) (8C:0C) [17:18:59:379]: Invoking remote custom action. DLL: 
C:\WINDOWS\Installer\MSI13.tmp, Entrypoint: ExecXmlConfig
MSI (s) (8C:00) [17:18:59:379]: Generating random cookie.
MSI (s) (8C:00) [17:18:59:395]: Created Custom Action Server with PID 1456 
(0x5B0).
MSI (s) (8C:54) [17:18:59:441]: Running as a service.
MSI (s) (8C:54) [17:18:59:441]: Hello, I'm your 32bit Elevated custom action 
server.
MSI (s) (8C!3C) [17:18:59:707]: Creating MSIHANDLE (43) of type 790531 for 
thread 1340
ExecXmlConfig:  Error 0x8007006e: failed to load XML file: C:\Program Files 
(x86)\Google\Google SketchUp 
6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml
MSI (s) (8C!3C) [17:18:59:707]: Closing MSIHANDLE (43) of type 790531 for 
thread 1340
MSI (s) (8C!3C) [17:18:59:707]: Creating MSIHANDLE (44) of type 790531 for 
thread 1340
Error 25541. Failed to open XML file C:\Program Files (x86)\Google\Google 
SketchUp 6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml, system error: 
-2147024786
MSI (s) (8C!3C) [17:19:00:754]: Product: IES <Virtual Environment> 5.9 SketchUp 
Plug-in -- Error 25541. Failed to open XML file C:\Program Files 
(x86)\Google\Google SketchUp 
6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml, system error: 
-2147024786

MSI (s) (8C!3C) [17:19:00:754]: Closing MSIHANDLE (44) of type 790531 for 
thread 1340
MSI (s) (8C:0C) [17:19:00:754]: Closing MSIHANDLE (42) of type 790536 for 
thread 960
Action ended 17:19:00: InstallFinalize. Return value 3.

As you can see the very friendly error messages refer to being unable to open 
the file. When the error dialog appeared I did a check of the file before I 
clicked OK & it existed at the supplied location, was able to be read & written 
etc which is what was originally confusing me (using XMLFile doesn't throw the 
error dialog, it just goes directly to rollback).


The problem appears to be in the XML file not the code.

The original file had the following in the header:

<?xml version='1.0'?>

I created a new XML file in Visual Studio & pasted the content of the original 
file in. It has the following in its header:

<?xml version="1.0" encoding="utf-8"?>

It now works as expected without any code changes from the below code supplied 
by Brian.
Ironically the guy who is responsible for creating that file (and causing me a 
whole day of grief) appeared in the office about 20 minutes ago (we outsourced 
the development of this plug-in to an external contractor).

Moral of the story: Don't believe the hype^H^H^H^H error message.

Thanks for all your help Brian, Joel & Rob.


Palbinder Sandher 
Software Deployment and IT Administrator 

T: +44 (0) 141 945 8500 
F: +44 (0) 141 945 8501 
http://www.iesve.com 

**Design, Simulate + Innovate with the <Virtual Environment>**

Integrated Environmental Solutions Limited. Registered in Scotland No. SC151456 
Registered Office - Helix Building, West Of Scotland Science Park, Glasgow G20 
0SP

Email Disclaimer



-----Original Message-----
From: Rob Mensching [mailto:[EMAIL PROTECTED] 
Sent: 22 October 2008 19:26
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

XmlConfig does not automatically create an uninstall step for you.  That's why 
there is the "On" attribute.  You get to specify what you want to have happen 
on uninstall.  Much like SQL Strings/Scripts.

-----Original Message-----
From: Brian Rogers [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 10:52
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

I think the problem here is that there is no corresponding "uninstall" action 
for an operation like the following:

<util:XmlConfig Id="AddElementText"
                File="[SOMEEXISTINGFILE]"
                Action="create"
                ElementPath="/someElement"
                Node="value"
                Value="NEW TEXT"
                On="install"
                Sequence="1" />

(Sample text for SOMEEXISTINGFILE:)

<?xml version="1.0" encoding="utf-8"?>
<someElement>ORIGINAL TEXT, THIS COULD BE ANYTHING</someElement>

I do see that rollback works in the case of a problem during installation (I 
just tested it and it reverted to the original file).  Uninstall seems 
trickier, and I can't think of a way to do this without resorting to a 
user-defined custom action (e.g. backing up the file before changing it and 
restoring it on uninstall).

######################################
$_='^#(/||/@[EMAIL PROTECTED]@:^[-['^";@@@\\>])@.".
"{)/];)^{";$,+=(++$,);$_.=">&$,";`$_`;


-----Original Message-----
From: Rob Mensching [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 10:09 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

XmlConfig *can* edit existing XML files and on rollback it reverts any changes 
it makes.  XmlFile does not have those capabilities.

-----Original Message-----
From: Brian Rogers [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 09:42
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

Hmm, I guess there is no straightforward way to edit existing values in an XML 
file with XmlConfig.  As you mention, if it were possible, it would make it 
hard to rollback changes if something goes wrong (it would somehow have to read 
and store the original value so it could be reverted later).

I guess you'll have to use XmlFile if you want to do that.  I don't think 
you'll be able to rollback/uninstall the change unless you write a custom 
action doing what I describe above (reading the original value and saving it 
off somewhere).

That WOW64 message is not an error.  From the WiX source code:

        // If we fail, log the error but proceed, because we may not need a 
particular function, or the Wow64 API at all
        if (!s_pfnDisableWow64)
        {
            WcaLog(LOGMSG_STANDARD, "Found Wow64 API, but unable to link to 
Wow64DisableWow64FsRedirection function in kernel32.dll");
        }

XmlConfig cannot vary due to any .NET Framework version because it is a C++ 
custom action with no .NET dependencies.

######################################
$_='^#(/||/@[EMAIL PROTECTED]@:^[-['^";@@@\\>])@.".
"{)/];)^{";$,+=(++$,);$_.=">&$,";`$_`;


-----Original Message-----
From: Joel Paula (hotmail) [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 9:27 AM
To: 'General discussion for Windows Installer XML toolset.'
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

Brian,

XmlConfig only allows for adding or deleting elements.
I understand this is more straightforward when you want to rollback.

How do you "edit" an XML file?
XmlFile seemed to be the thing to use, but it always throws the error " 
ExecXmlFile:  Found Wow64 API, but unable to link to 
Wow64DisableWow64FsRedirection function in kernel32.dll", no matter what I try 
to feed it.
Is it a bug and should we file a bug, or are we doing something wrong?

By the way, the example you give produces a "value" attribute on the 
"/IESInterface/IESveLocation" node when I build and run it. Is there anything 
that may influence how it works, depending on the machine or the .Net framework 
version?
I had to use something like:
<util:XmlConfig Id="AddVELocation"
        File="[#IESveInterfaceParameters.xml]"
        Action="create"
        ElementPath="/IESInterface "
        Name="IESveLocation"
        Node="element"
        Value="[VE59LOCATION]apps"/>

Thanks for your help.

Joel Paula


-----Original Message-----
From: Brian Rogers [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 4:47 PM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Bug in x64 build of WiX UtilExtension?

I'd recommend using XmlConfig instead of XmlFile.  The following should achieve 
what you want:

<util:XmlConfig Id="updateVELocation"
                File="[#IESveInterfaceParameters.xml]"
                Action="create"
                On="install"
                ElementPath="/IESInterface/IESveLocation"
                Node="value"
                Value="[VE59LOCATION]apps" />

This blog post has some more examples of using XmlConfig: 
http://blogs.msdn.com/gisenberg/archive/2007/10/09/wix-v3-and-xmlconfig-xmlfile-troubleshooting.aspx


######################################
$_='^#(/||/@[EMAIL PROTECTED]@:^[-['^";@@@\\>])@.".
"{)/];)^{";$,+=(++$,);$_.=">&$,";`$_`;


-----Original Message-----
From: Pally Sandher [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 22, 2008 6:12 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Bug in x64 build of WiX UtilExtension?

I'm trying to use util:XMLFile to modify the inner text of a tag in an XML file 
during installation which is installed by my MSI for one of our plug-ins.

The XML file is named IESveInterfaceParameters.xml and contains the following 
code:

<?xml version='1.0'?>
<IESInterface>
  <IESveLocation>M:\IES\apps </IESveLocation>
  <OutputveXMLLocation> </OutputveXMLLocation>
  <Preferences city='Boulder (CO)' latitude='40.017' minimumFloorArea='0.0' 
buildingAreaType='Office' thinWalls='1' 
buildingRoomService='VariableRefrigerantFlow' 
verticalHorizontalElementTransitionAngle='45.0' 
adjacencySeparationDistance='0.91441111923921' longitude='-105.283' 
diagnosticAids='no' minimumRoomHeight='0.0'/> </IESInterface>

My installer code is as follows:

<Component Id="Dialogs" DiskId="1" Guid="myguid"> ...
  <File Id="IESveInterfaceParameters.xml" Name="IESveInterfaceParameters.xml" 
Source="..\..\..\code\Sketchup\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml"
 /> ...
  <util:XmlFile Id="updateVELocation" Action="setValue" 
File="[#IESveInterfaceParameters.xml]" Value="[VE59LOCATION]apps" 
ElementPath="/IESInterface/IESveLocation" SelectionLanguage="XPath" /> 
</Component>


All the above code is supposed to do is replace the inner text of the 
<IESveLocation> tag. Unfortunately the documentation for util:XMLFile leaves a 
lot to be desired so it doesn't work as yet (back to good old trial & error 
again). Any help would be appreciated however this isn't what I'm referring to 
as a bug.

The machine that I use to build my MSIs runs XP64. I install the Wix3_x64.msi 
package when updating my WiX compiler (currently using v3.0.4617.0). When I 
build my MSI in Visual Studio it is set to build as x86 & checking it in Orca 
shows the Platform set to "Intel".

If I attempt to install it on an XP64 Virtual Machine I get the following in 
the log:

Action 12:08:28: ExecXmlFile.
MSI (s) (40:C4) [12:08:28:138]: Executing op: 
CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=1€1€C:\Program
 Files (x86)\Google\Google SketchUp 
6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml€3€/IESInterface/IESveLocation€€C:\Program
 Files (x86)\IES\VE 59\) MSI (s) (40:C4) [12:08:28:138]: Creating MSIHANDLE 
(10) of type 790536 for thread 1988 MSI (s) (40:C0) [12:08:28:138]: Invoking 
remote custom action. DLL: C:\WINDOWS\Installer\MSI4.tmp, Entrypoint: 
ExecXmlFile MSI (s) (40:C0) [12:08:28:169]: Generating random cookie.
MSI (s) (40:C0) [12:08:28:169]: Created Custom Action Server with PID 1464 
(0x5B8).
MSI (s) (40:A8) [12:08:28:216]: Running as a service.
MSI (s) (40:A8) [12:08:28:216]: Hello, I'm your 32bit Elevated custom action 
server.
MSI (s) (40:C0) [12:08:28:497]: Closing MSIHANDLE (10) of type 790536 for 
thread 1988 Action ended 12:08:28: InstallFinalize. Return value 3.

It then does a rollback & throws up the FatalError dialog. I'm guessing this is 
because my code is incorrect however when I attempt to install the same MSI on 
an XP32 Virtual Machine I get the following in the log:

Action 12:09:11: ExecXmlFile.
MSI (s) (94:10) [12:09:11:325]: Executing op: 
CustomActionSchedule(Action=ExecXmlFile,ActionType=3073,Source=BinaryData,Target=ExecXmlFile,CustomActionData=1€1€C:\Program
 Files\Google\Google SketchUp 
6\Plugins\IESLink\Dialogs\IESveInterfaceParameters.xml€3€/IESInterface/IESveLocation€€C:\Program
 Files\IES\VE 59\) MSI (s) (94:10) [12:09:11:340]: Creating MSIHANDLE (10) of 
type 790536 for thread 1296 MSI (s) (94:38) [12:09:11:340]: Invoking remote 
custom action. DLL: C:\WINDOWS\Installer\MSI4.tmp, Entrypoint: ExecXmlFile MSI 
(s) (94:A0) [12:09:11:340]: Generating random cookie.
MSI (s) (94:A0) [12:09:11:356]: Created Custom Action Server with PID 532 
(0x214).
MSI (s) (94:BC) [12:09:11:418]: Running as a service.
MSI (s) (94:BC) [12:09:11:418]: Hello, I'm your 32bit Elevated custom action 
server.
MSI (s) (94!88) [12:09:13:637]: Creating MSIHANDLE (11) of type 790531 for 
thread 648
ExecXmlFile:  Found Wow64 API, but unable to link to 
Wow64DisableWow64FsRedirection function in kernel32.dll MSI (s) (94!88) 
[12:09:13:653]: Closing MSIHANDLE (11) of type 790531 for thread 648 MSI (s) 
(94!88) [12:09:13:653]: Creating MSIHANDLE (12) of type 790531 for thread 648
ExecXmlFile:  Found Wow64 API, but unable to link to 
Wow64RevertWow64FsRedirection function in kernel32.dll MSI (s) (94!88) 
[12:09:13:653]: Closing MSIHANDLE (12) of type 790531 for thread 648 MSI (s) 
(94:38) [12:09:13:715]: Closing MSIHANDLE (10) of type 790536 for thread 1296 
Action ended 12:09:13: InstallFinalize. Return value 3.

Why any mention of the WoW64 API exists when running on 32-bit XP is bizarre. 
Hence I reckon it's a bug. I haven't tried installing the non-x64 WiX MSI as 
yet but while I do, if anyone could confirm or deny this as being a bug before 
I report it on the SourceForge tracker it would be a great help.

Cheers,


Palbinder Sandher
Software Deployment and IT Administrator

T: +44 (0) 141 945 8500
F: +44 (0) 141 945 8501
http://www.iesve.com

**Design, Simulate + Innovate with the <Virtual Environment>**

Integrated Environmental Solutions Limited. Registered in Scotland No. SC151456 
Registered Office - Helix Building, West Of Scotland Science Park, Glasgow G20 
0SP

Email Disclaimer

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge 
Build the coolest Linux based applications with Moblin SDK & win great prizes 
Grand prize is a trip for two to an Open Source event anywhere in the world 
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to