The Registry/@Type should be "binary" and the Registry/@Value should contain
your raw data. The result will be "#xAAABBBCCCEEE". The string can be
pretty much any length. Although if you are storing a lot of data one might
start to question whether the Registry is the right place for this sort of
The dark comment is straight out of the MSI SDK (Robert Flaming likes to do
that <shrug/>). The WiX toolset abstracts a lot of the ugliness in getting
square brackets and tildes and pound signs all in the right place by using
attributes on the Registry element instead. Therefore that comment would
not be directly useful in the WiX.chm.
Adding a Source attribute to the end of Registry might be a good thing to do
for WiX v3. Feel free to open a Feature Request for it. It isn't an easy
feature to do because binaries are all supposed to be processed by the
Binder so the data has to be marshaled quite a ways but it definitely seems
From: Bill Arnette [mailto:BillA@...]
Sent: Wednesday, August 24, 2005 8:25 AM
To: robmen@...; wix-users@...
Subject: RE: [WiX-users] Binary registry values
[mailto:wix-users-admin@...] On Behalf Of Rob >>Mensching
>Sent: Wednesday, August 24, 2005 2:29 AM
>To: 'Arnette, Bill'; wix-users@...
>Subject: RE: [WiX-users] Binary registry values
>The key facts:
> Registry/@Value='hexadecimal binary data'
>I will update the WiX.chm to be a bit more clear about this.
That would be good. Although a definition of 'hexadecimal binary data'
would also be helpful. For example, I looked at the source and determined
that it should be of the form:
Is this correct? Can the string be any length?
Perhaps a @src attribute could be added to the <Registry> element to import
a binary stream from a file. Just a thought.
I found this comment in Decompiler.cs:
#x The value is interpreted and stored as a hexadecimal value
#% The value is interpreted and stored as an expandable string
# The value is interpreted and stored as an integer (REG_DWORD).
If the value begins with two or more consecutive number signs (#), the
# is ignored and value is interpreted and stored as a string.
If the value contains the sequence tilde [~], then the value is
a Null-delimited list of strings (REG_MULTI_SZ). For example, to
specify a list
containing the three strings a, b and c, use "a[~]b[~]c."
It appears the last part is straight from the MSI SDK, but the other value
attribute formats are WiX-specific.
I think that comment above should be added to WiX.chm.
I am sure not many people use binary registry values, but I am once again
thinking about how to register DirectShow filters without SelfReg. Since a
DirectShow filter has a binary registry value, I need to a way to duplicate
it with WiX.