Hi,

I've got a package that is a plug-in for another product. When I install 
the plug-in, I want it to modify the app.config file for the primary 
product to register itself; similarly I want it to deregister itself on 
uninstall. I've got this all working except for the uninstall part.

In my wxs I've got:

<Component Id="ConfigUpdate" KeyPath="yes" 
Guid="{243B948C-153A-477d-BF8F-687915DE0188}">
<util:XmlConfig Id="AddPackageNode"
File="[INSTALLDIR]Renderer.exe.config"
Action="create"
ElementPath="//configuration/gdnet.rendering/presentationPackages"
Name="add"
Node="element"
Sequence="1"
On="install"/>
<util:XmlConfig Id="AddPackagePath"
File="[INSTALLDIR]Renderer.exe.config"
ElementPath="AddPackageNode"
Name="path" Value="Packages\StandardLayouts.dll"
Sequence="2"/>
<util:XmlConfig Id="RemovePackageNode"
File="[INSTALLDIR]Renderer.exe.config"
Action="delete"
Node="element"
VerifyPath="add[...@path='Packages\StandardLayouts.dll'[\]]"
ElementPath="//configuration/gdnet.rendering/presentationPackages"
On="uninstall"
Sequence="1"/>
</Component>

This successfully adds an <add path="Packages\StandardLayouts.dll"/> 
element under configuration/gdnet.rendering/presentationPackages in my 
main app's config file.

However, uninstalling it doesn't remove the element. I checked out the 
MSI with Orca:

RemovePackageNode [INSTALLDIR]Renderer.exe.config 
//configuration/gdnet.rendering/presentationPackages 
add[...@path='Packages\StandardLayouts.dll'[\]] 545 ConfigUpdate 1

which looks fine; I also tried running msiexec with verbose logging 
turned on, and I see:

MSI (s) (48:8C) [19:55:29:273]: Invoking remote custom action. DLL: 
C:\Windows\Installer\MSIB6EC.tmp, Entrypoint: SchedXmlConfig
MSI (s) (48:78) [19:55:29:316]: Generating random cookie.
MSI (s) (48:78) [19:55:29:333]: Created Custom Action Server with PID 
3720 (0xE88).
MSI (s) (48:A8) [19:55:29:657]: Running as a service.
MSI (s) (48:A8) [19:55:29:661]: Hello, I'm your 32bit Impersonated 
custom action server.
MSI (s) (48!BC) [19:55:29:684]: PROPERTY CHANGE: Adding 
ExecXmlConfigRollback property. Its value is '0€C:\Program Files 
(x86)\GameDev.net\Renderer\Renderer.exe.config€|TZT8fK/rJAK4kL5:|QK9Wwq3U4_RHz|k?hobqh8e3{xh...@9fu6a8|UBxH3'ulL)CanKA5[8(^t}uG(;KtIVZHzG6:|QKF5[8(Sm^C/KgIzG6:|QK-C22KTRR1I'fojmgrvpkzl...@otc/Ay6[HjM?z:%c,y3^|b?H*1DQKw1}WH!m3kL^WZjKz|,9I87IJMFIo?3pfuPKvFK[H'/n}8'%^C/oX,(M{rvuI?qUIKDQ?h8,ImPK;tTtG{urQKf;}kKDY2+0QVc1L1.As;?7nJM)43kL}MoYHwJDSIxI~ZHpO?oK%M^9IyuzQK'LEhM,mvuIy;CZ:{urQKf;}kKcEZjKz|,9I87IJMoT:oB{rvuIRKzD/i_WWH.V(UIrmf;Hj%lKM%jZJM(/n}8'%^C/hM}mKz|,9IeuZJM5xN-MHX?A/P%w;HIc,y3!}b?H*1DQK/xH[H!m3kLh-p/C%m7nKs(J!0A5NQ4gth_MrA,1KWI4pH{cT[HJ4[8(Sm^C/?SEwH2-XKMXm0CGGV0!M_vl;?C{RRKDQ?h8{nGr3pstZHAoAy3:J;+09XFCG]GX;?C{RRKDQ?h8;XFCGB]?w3pstZHAoAy3:J;+0W4[8(Sm^C/WiK[H6ckKM)CanKV6{yGnM9ZHF5[8(Sm^C/6/[;h60...@*3jafgibgqpafel_ppkq.-@HkkEpK_0~x3/,K*0VLK446IR,M~IFCG6:|QKSmgSJv~Q,MHX?A/rGu2I'FoJMGrvPKzlduIILn:)YjWC8t(~ZHAciVIxI~ZHpO?oKSrn:):m^C/foGoKbV,+9'%^C/Sm^C/_...@ok,7dBGZSI!0f,sAGKa;+0HX?A/Sm^C/qjWC8}!TtI6P1CG6:|QKF5[8(Sm^C/Sm^C/[bE:GvB'sGB6llLI5ti8{Z22A/[e%DsUKhB0FnuIR
Action start 19:55:29: SchedXmlConfig.
MSI (s) (48!BC) [19:55:29:685]: Doing action: ExecXmlConfigRollback
MSI (s) (48!BC) [19:55:29:685]: Note: 1: 2205 2: 3: ActionText
Action start 19:55:29: ExecXmlConfigRollback.
MSI (s) (48!BC) [19:55:29:688]: PROPERTY CHANGE: Adding ExecXmlConfig 
property. Its value is '1€C:\Program Files 
(x86)\GameDev.net\Renderer\Renderer.exe.config€7€0€//configuration/gdnet.rendering/presentationpackages€a...@path='Packages\StandardLayouts.dll']€€€0'.
Action ended 19:55:29: ExecXmlConfigRollback. Return value 1.
MSI (s) (48!BC) [19:55:29:689]: Doing action: ExecXmlConfig
MSI (s) (48!BC) [19:55:29:689]: Note: 1: 2205 2: 3: ActionText
Action start 19:55:29: ExecXmlConfig.
Action ended 19:55:29: ExecXmlConfig. Return value 1.
MSI (s) (48:04) [19:55:29:696]: Doing action: RegisterUser
MSI (s) (48:04) [19:55:29:696]: Note: 1: 2205 2: 3: ActionText
Action ended 19:55:29: SchedXmlConfig. Return value 1.

MSI (s) (48:04) [19:55:31:267]: Executing op: 
ActionStart(Name=ExecXmlConfig,,)
MSI (s) (48:04) [19:55:31:268]: Executing op: 
CustomActionSchedule(Action=ExecXmlConfig,ActionType=3073,Source=BinaryData,Target=ExecXmlConfig,CustomActionData=1€C:\Program
 
Files 
(x86)\GameDev.net\Renderer\Renderer.exe.config€7€0€//configuration/gdnet.rendering/presentationpackages€a...@path='Packages\StandardLayouts.dll']€€€0)
MSI (s) (48:34) [19:55:31:273]: Invoking remote custom action. DLL: 
C:\Windows\Installer\MSIBFC7.tmp, Entrypoint: ExecXmlConfig

(It looks like my mail client has screwed up the spacing in the 
CustomActionData strings a bit; looking at the log file in visual 
studio, the fields are separated with whitespace).

After looking through the WixCA sources, it looks like everything should 
be functioning normally. There are no warning or debug messages of any 
sort saying that XmlConfig can't do its thang. Yet the element doesn't 
get removed. The timestamp on the config file changes, but the element 
is still in there. WI thinks that the install succeeded.

Anyone know what's going on?

- Richard


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to