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