Ok, so I thought that I provide the solution of how to use the
StringTools.dll contained in the msiext found
http://msiext.codeplex.com/releases/view/39468 as I myself spend to much
time to get it to work!! and maybe this could help someone else..
Put the StringTools.dll in the same folder as the .wxs file.
Finally put those tags into your .wxs file. The String_Replace documentation
can be found here..
http://code.dblock.org/Source/msiext/1.2/Docs/_string_tools_impl_8h.html#a4e624060174da1bf53aea402c2e29d7a
STRING_VALUE_FROM = "C:\Program Files (x86)\Microsoft Help
Viewer\v1.0\HelpLibManager.exe" .. this is the string faulty converted when
read from registry containing the " (x86)" string we want to remove.
*STRING_REPLACE_FROM = '"(x86)\" ... this is what should be replaced
**STRING_REPLACE_TO = "\" ... this is what we should replace with*
STRING_VALUE_TO = ... this will be filled with the replaced string after the
String_Replace CustomAction have been run...

<Binary Id='StringTools' SourceFile='StringTools.dll' />

<Property Id="HELPINSTALLDIR">
  <RegistrySearch Id="HelpRegistry" Root="HKLM"
Key="SOFTWARE\Microsoft\Help\v1.0" Name="AppRoot" Type="raw" />
</Property>

<Property Id='STRING_REPLACE_FROM' Value=' (x86)\'/>
<Property Id='STRING_REPLACE_TO' Value='\'/>

<CustomAction Id="String_Replace" Return="check" Execute="immediate"
BinaryKey='StringTools' DllEntry='String_Replace' />
<CustomAction Id="SetSTRING_VALUE_FROM" Return="check" Execute="immediate"
Property="STRING_VALUE_FROM" Value="[HELPINSTALLDIR]HelpLibManager.exe"/>

<CustomAction Id="DeployHELP3" Return="check" Property="STRING_VALUE_TO"
Execute="deferred" Impersonate="no" ExeCommand="/product VS /version 100
/locale en-us install /sourceMedia &quot;HelpContentSetup.msha&quot;
/content [CommonAppDataFolder]Microsoft\HelpLibrary /silent"/>
<CustomAction Id="UnDeployHELP3" Return="check" Property="STRING_VALUE_TO"
Execute="deferred" Impersonate="no" ExeCommand="/product VS /version 100
/locale en-us /uninstall /silent /vendor &quot;VendorName&quot;
/mediaBookList &quot;Help Entries&quot; /productName YourProductName"/>

<InstallExecuteSequence>
...
      <Custom Action="SetSTRING_VALUE_FROM"
After="ValidateProductID">STRING_VALUE_FROM=""</Custom>
      <Custom Action="String_Replace"
After="SetSTRING_VALUE_FROM">String_Replace=""</Custom>
...
      <Custom Action="UnDeployHELP3" After="MsiUnpublishAssemblies">$MainDll
= 2</Custom>
      <Custom Action="DeployHELP3" After="MsiPublishAssemblies">$MainDll >
2</Custom>
</InstallExecuteSequence>

I think thats all... glhf..

/Jimmie

2010/5/14 Matt Johnson <ma...@timeamerica.com>

> Not sure why.  I had the same problem.  I used the StringTools custom
> action from the msiext project to take the " (x86) back out.  If there's an
> easier way, I'd be glad to know.
>
> BTW - I checked that specific key, and it is indeed just "Program Files",
> in both the regular x64 root and the wow x86 key - so it's not that it's
> pulling from the wrong place.
>
> Perhaps there's a property to set to tell MSI not to do this replacement?
>
> Matt Johnson MCPD, MCTS, MCSD, MCDBA
> Director of Application Development
> Time America, Inc.
> ma...@timeamerica.com | www.timeamerica.com
>
>
> -----Original Message-----
> From: Jimmie Eriksson [mailto:eriksson.jim...@gmail.com]
> Sent: Friday, May 14, 2010 7:42 AM
> To: wix-users@lists.sourceforge.net
> Subject: [WiX-users] RegistrySearch converts value data
>
> Hi
>
> Anyone who can tell me why my RegistrySearch converts the value contained
> in
> the registry?
>
>    <Property Id="HELPINSTALLDIR">
>      <RegistrySearch Id='HelpInstallRegistry' Type='raw' Root='HKLM'
> Key='SOFTWARE\Microsoft\Help\v1.0' Name='AppRoot' />
>    </Property>
>
> The actual value in registry is...
> AppRoot = C:\Program Files\Microsoft Help Viewer\v1.0\
>
> But according to the log file upon installation C:\Program Files\Microsoft
> Help Viewer\v1.0\ converts into C:\Program Files *(x86)*\Microsoft Help
> Viewer\v1.0\
> when using it in a custom action
>
>    <CustomAction Id="SetHELPInstaller" Return="check" Execute="immediate"
> Property="HELPInstaller" Value="[HELPINSTALLDIR]HelpLibManager.exe" />
>
> from log..
> MSI (s) (08:78) [16:20:59:102]: PROPERTY CHANGE: Adding HELPInstaller
> property. Its value is 'C:\Program Files (x86)\Microsoft Help
> Viewer\v1.0\HelpLibManager.exe'
>
> The folder on disk: C:\Program Files\Microsoft Help Viewer\v1.0\
>
> So this seems like a bug where all strings containing Program Files found
> in
> registry converts to Program Files (x86)
>
> /Jimmie
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
------------------------------------------------------------------------------

_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to