Re: [WiX-users] A bug?-get REG_SZ when using type="integer"
I'm seeing the same behaviour. In my component I have the following lines: In the resulting package, the relevant line in the Property table is: Property = PORTVALUE, Value="1234" In the Registry table, Value = #[PORTVALUE]. When I run this on a fresh install, it correctly writes a DWORD with value 1234. When in maintenance/upgrade, it writes a string with value #1234. As far as I can tell, the value being retrieved from AppSearch is "#1234".. but then when it tries to write it to the registry, the registry value resolves to ##1234 which is a REG_SZ. Does anyone know what I should be doing in this case? Or does no one beside me ( and the original poster, apparently) try to preserve DWORD registry values? Thanks, :D On 5/15/07, Bob Arnson <[EMAIL PROTECTED]> wrote: Bei Liu (Volt) wrote: When use the , set the Type="integer", result: REG_SZ, expect: REG_DWORD Is this bug? Unlikely but it's impossible to say without more details. Can you show a minimal example that repro's the problem? -- sig://boB http://joyofsetup.com/ - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
Re: [WiX-users] A bug?-get REG_SZ when using type="integer"
So to achieve the desired behaviour, setting the RegistryValue to Type string but passing in a #-prefixed value will work with no side-affects, correct? I mean, besides being conceptually wonky, of course. That is, Will write a DWORD on install, and also a DWORD on reinstall/upgrade? :D On 5/25/07, Rob Mensching <[EMAIL PROTECTED]> wrote: Unfortunately, by design. That's the Windows Installer behavior for RegSearch. The MSI SDK will have more details if you desire. *From:* [EMAIL PROTECTED] [mailto: [EMAIL PROTECTED] *On Behalf Of *BES Installer *Sent:* Friday, May 25, 2007 7:43 AM *To:* Bob Arnson *Cc:* Bei Liu (Volt); wix-users@lists.sourceforge.net *Subject:* Re: [WiX-users] A bug?-get REG_SZ when using type="integer" I'm seeing the same behaviour. In my component I have the following lines: In the resulting package, the relevant line in the Property table is: Property = PORTVALUE, Value="1234" In the Registry table, Value = #[PORTVALUE]. When I run this on a fresh install, it correctly writes a DWORD with value 1234. When in maintenance/upgrade, it writes a string with value #1234. As far as I can tell, the value being retrieved from AppSearch is "#1234".. but then when it tries to write it to the registry, the registry value resolves to ##1234 which is a REG_SZ. Does anyone know what I should be doing in this case? Or does no one beside me ( and the original poster, apparently) try to preserve DWORD registry values? Thanks, :D On 5/15/07, *Bob Arnson* <[EMAIL PROTECTED]> wrote: Bei Liu (Volt) wrote: When use the , set the Type="integer", result: REG_SZ, expect: REG_DWORD Is this bug? Unlikely but it's impossible to say without more details. Can you show a minimal example that repro's the problem? -- sig://boB http://joyofsetup.com/ - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] [WIX-users] Preserving a value from the registry
Hi there, I'm trying to create an installer package that writes a default value on a fresh install but preserves a changed value on upgrade or maintenance. What I did was author my MSI package in the following way: In the resulting package, the relevant entry in the Property table is: Property = PORTVALUE, Value="1234" In the Registry table, the relevant entry (partial) is Value = #[PORTVALUE]. When I run this on a fresh install, it correctly writes a DWORD with value 1234. When in maintenance/upgrade, it incorrectly writes a REG_SZ with value #1234. As far as I can tell, the value being retrieved from AppSearch is "#1234".. but then when it tries to write it to the registry, the registry value resolves to ##1234 which is a REG_SZ. It seems that this could easily be fixed by me modifying my Property table in the following way: Property = PORTVALUE, Value=" #1234" And in the Registry table: But there don't seem to be easy ways to do this. It looks like I would set my RegistryValue @type to "String" and prefix my Property @Value with #, but it seems a little conceptually murky ("So it gets installed as a DWORD, but you set it to be a string?"). Does anyone have any suggestions on how to make this work? How do you preserve a non-string registry value? I think I have to be missing something because it seems this will break if you use any type other than string. Let me know if I haven't been clear. Thanks, :D - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] Preserving a value from the registry
Hi there, I'm trying to create an installer package that writes a default value on a fresh install but preserves a changed value on upgrade or maintenance. What I did was author my MSI package in the following way: In the resulting package, the relevant entry in the Property table is: Property = PORTVALUE, Value="1234" In the Registry table, the relevant entry (partial) is Value = #[PORTVALUE]. When I run this on a fresh install, it correctly writes a DWORD with value 1234. When in maintenance/upgrade, it incorrectly writes a REG_SZ with value #1234. As far as I can tell, the value being retrieved from AppSearch is "#1234".. but then when it tries to write it to the registry, the registry value resolves to ##1234 which is a REG_SZ. It seems that this could easily be fixed by me modifying my Property table in the following way: Property = PORTVALUE, Value="#1234" And in the Registry table: But there don't seem to be easy ways to do this. It looks like I would set my RegistryValue @type to "String" and prefix my Property @Value with #, but it seems a little conceptually murky ("So it gets installed as a DWORD, but you set it to be a string?"). Does anyone have any suggestions on how to make this work? How do you preserve a non-string registry value? I think I have to be missing something because it seems this will break if you use any type other than string. Let me know if I haven't been clear. Thanks, :D - This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users
[WiX-users] [WiX-Users] Reglocator on 64-bit machine?
Hi there, I'm experiencing a strange issue and was wondering if anyone had some insight into it. I have an installer package where all the components are 32-bit, but I must nonetheless interact with 64-bit prerequisite software and install on a 64 bit platform. Now, all I am trying to do at this point is read from the 64-bit registry hive with the help of AppSearch and RegLocator, so that I can determine what folder the prerequisite software is in. I updated the Reglocator.Type column for this entry to 16, to indicate misdbLocatorTypeDirectory and msidbLocatorType64bit. However, in the subsequent log, I see that the property linked to this row is not being set, even though this registry exists. Now when I change the Reglocator.Type column to 18 (msidbLocatorTypeRawValue and msidbLocatorTypeDirectory) I see that this is set but then something called WIN64DUALFOLDERS kicks in and changes the value. This makes it plain what happened in the first case; it found the value in the registry, C:\Program Files\MyFolder\MyProgram.exe and then WIN64DUALFOLDERS changes it to C:\*Program Files (x86)*\MyFolder\MyProgram.exe. Then Windows installer attempts to confirm that the folder exists and since it doesn't under the new name, it won't set the property (It really should log the reason it doesn't set it, but that's something to take up with the MSI folks I guess). So my question is, how do I stop WIN64DUALFOLDERS from working in this case? I'm using MSI 3.1, if that makes any difference? I've seen people say that you can select this if the component is marked as 64-bit, but in this case I'm using reglocator which does not seem to allow for that distinction. Thanks, :Duan - This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse012070mrt/direct/01/___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users