Thanks for this it made me realise what I needed to do. 

For info, the hash is the windows install default way of writing the dword type 
and WiX overrides this; what I missed was that I set the type to integer so 
what WiX did was append a # to the value so it was now ##1 which means it was 
written as the string #1. The bit I missed was that telling WiX it is a string 
means that nothing is prepended and therefore the #1 is written by windows 
installer as a dword. The WiX documentation tells you not to do this but it is 
a useful workaround for this problem.

Neil

-----Original Message-----
From: Chris Lord [mailto:chris.l...@atterotech.com] 
Sent: 29 October 2012 15:31
To: wix-users
Subject: Re: [WiX-users] Setting DWORD registry keys

Neil,

I just had this same issue myself.  I wanted to move some settings from an INI 
file to the registry and I was reading my values value back using registry 
search but it always comes back as '#1' and you can't write that back as an 
integer.  It took me a while as I couldnt believe that it couldnt be done as to 
me that is an obvious feature an MSI should be able to deal with......  

Anyway, to cut a long story short after several hours of exasperated attempts I 
stumbled upon something buried in some documentation (I forget exactly where I 
read it) that said something like when you write a value, the MSI can work out 
what type of value is being written by the prefix.  I didnt take much notice of 
it at first.  However, what I eventually realized is that it means is you have 
to write a value with a default type and let the MSI work out from the values 
formatting what type it really is.  What you therefore have to do is write it 
back as a string and let it work out, from the # at the beginning, it's a 
number!!!  So far, its proved perfect up to now for me!

Here's my WXS taken from my MSI (with the names changes to protect the 
innocent).  

At the start of my MSI, I read the registry using this

<Property Id="PROPERTYNAME" Value="#-1">
      <RegistrySearch Id="regSearchName" Root="HKLM" Key="<Approppriate 
Key>" Name="<ParameterName>" Type="raw" />
</Property>

The Value section sets the default in case the registrySearch fails.  
Note the # prefix.  Without this, the value is not treated as an integer.  

Later, I do this to write the value back.

<Component Id="<InsertName>" Guid="<Insert GUID>">
        <RegistryValue Id="SomeName" Action="write" Root="HKLM" 
Key="<Same AppropriateKey as above>" 
        Name="<same ParamterName as above" Value="[PROPERTYNAME]" 
Type="string" />
</Component>

I believe it or not, the write actually writes a DWORD even though you ask it 
to write a string!!!

Hope this helps

Chris Lord
Attero Tech, LLC


-----Original Message-----
From: Neil Sleightholm [mailto:n...@x2systems.com]
Sent: Sunday, October 28, 2012 4:39 AM
To: General toolset. (wix-users@lists.sourceforge.net)
Subject: [WiX-users] Setting DWORD registry keys

In my installation I need to set a dword registry to a default value when the 
install is first run and remove the key on uninstall but not change it on an 
upgrade. I am struggling to find a way to do reliably and wondered if anyone 
had any suggestions.

Here is what I have tried:

1.       Read the existing value with <RegistrySearch> and rewrite it on 
upgrade, this fails because DWORDs come back prefixed with a hash (#) and 
<RegistryValue> causes this to be written as a string.

2.       Read the existing value with <RegistrySearch> and Condition the 
<RegistryValue> so it is only written when the value is not set. The problem 
with this is that on upgrade the key is removed.

I can solve this by writing a CA to read the values but I am sure there must be 
a standard way of doing this that is eluding me.

Neil

Neil Sleightholm
X2 Systems Limited
n...@x2systems.com<mailto:n...@x2systems.com>

------------------------------------------------------------------------
------
WINDOWS 8 is here. 
Millions of people.  Your app in 30 days.
Visit The Windows 8 Center at Sourceforge for all your go to resources.
http://windows8center.sourceforge.net/
join-generation-app-and-make-money-coding-fast/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users



------------------------------------------------------------------------------
The Windows 8 Center - In partnership with Sourceforge Your idea - your app - 
30 days.
Get started!
http://windows8center.sourceforge.net/
what-html-developers-need-to-know-about-coding-windows-8-metro-style-apps/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
The Windows 8 Center - In partnership with Sourceforge
Your idea - your app - 30 days.
Get started!
http://windows8center.sourceforge.net/
what-html-developers-need-to-know-about-coding-windows-8-metro-style-apps/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to