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: [email protected]
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
[email protected]
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
[email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users