|
|
#1 (permalink) |
|
Guest
Posts: n/a
|
Hi,
I have an .msi package (created using WiX3, if that is of any importance) that writes a registry value under HKLM during installation. Naturally, this requires admin privileges. For local installs under Administrator, it works fine. However, when I tried to publish that MSI via a group policy, and then install it on another machine under Power User account, that registry value was not written. The installation itself was reported as successfully completed, and all application files were copied properly; the issue is just with that registry value. What's even more weird is that it does create the parent registry key, and it does create the registry value underneath... but it's blank - the proper value (which is the serial number user enters in the registration dialog) is not entered into it. On the other hand, when installing from a published MSI using local Administrator, the registry value gets written. One could think it is a permission problem, but 1) It can create all the registry keys and the value, it just doesn't write the actual value into it - so permissions are seemingly fine, and 2) If it is a permission problem nonetheless, how come the installer doesn't complain? |
|
|
|
#2 (permalink) |
|
Guest
Posts: n/a
|
Hi,
On Wed, 8 Oct 2008 04:40:08 -0700 (PDT), Pavel Minaev <int19h@gmail.com> wrote: >On Oct 8, 10:30*am, Dennis Bareis <dbar...@newsgroup.nospam> wrote: >> I think a better question is where does the serial number's >> value come from and why this is failing... * > >The serial is coming from a dialog, which is described in the .wxs >file like this: > > <Dialog> > ... > <Control Id="LicenseKey" Type="MaskedEdit" X="20" Y="139" >Width="320" Height="15" Property="PIDKEY" Text="[PIDTemplate]" /> > ... > </Dialog> > >The dialog is displayed correctly during installation. After that, the >registry key is written like this: > > > <Component Id="SerialRegistryKey" Guid="b49a7816-63e4-4d6b-b41d- >f50a9ae92e4f" Permanent="yes"> > <RegistryValue Root="HKLM" Key="Software\!(loc.Manufacturer)\! >(loc.Product)" Name="Serial" Type="string" Value="[PIDKEY]"/> > </Component> > >The log shows that it is being written to the registry: > > ... > Action 17:26:17: WriteRegistryValues. Writing system registry >values > WriteRegistryValues: Key: \Software\Company\AppName, Name: Serial, >Value: 111-1111111 > Action 17:26:17: RegisterUser. Registering user > RegisterUser: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} > Action 17:26:17: RegisterProduct. Registering product > RegisterProduct: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} > ... > >So there's no mention of failure in the log. But the value is not >actually getting written, as I've described in a previous post. If it were failing then Windows Installer would detect it. Perhaps its being overwritten later then, either way the SysInternals tool "Process Monitor" will show you access to that registry and return codes etc. I'd filter on "RegWrite" or the keyname etc (otherwise you'll get swamped). Bye, Dennis Dennis Bareis [Microsoft MVP] (dbareis@KillSpam.gmail.com) http://dennisbareis.com/ Freeware Windows Installer creation tool (+ "ORCA automation"): http://makemsi.dennisbareis.com/ |
|
|
|
#3 (permalink) |
|
Guest
Posts: n/a
|
"Dennis Bareis" <dbareis@newsgroup.nospam> wrote in message
news:rl8re4dju9p7fjlstch76lorkil71jkhha@4ax.com... > Hi, > On Wed, 8 Oct 2008 04:40:08 -0700 (PDT), Pavel Minaev <int19h@gmail.com> > wrote: >> On Oct 8, 10:30 am, Dennis Bareis <dbar...@newsgroup.nospam> wrote: >>> I think a better question is where does the serial number's >>> value come from and why this is failing... >> The serial is coming from a dialog, which is described in the .wxs >> file like this: >> <Dialog> >> ... >> <Control Id="LicenseKey" Type="MaskedEdit" X="20" Y="139" >> Width="320" Height="15" Property="PIDKEY" Text="[PIDTemplate]" /> >> ... >> </Dialog> >> The dialog is displayed correctly during installation. After that, the >> registry key is written like this: >> <Component Id="SerialRegistryKey" Guid="b49a7816-63e4-4d6b-b41d- >> f50a9ae92e4f" Permanent="yes"> >> <RegistryValue Root="HKLM" Key="Software\!(loc.Manufacturer)\! >> (loc.Product)" Name="Serial" Type="string" Value="[PIDKEY]"/> >> </Component> >> The log shows that it is being written to the registry: >> ... >> Action 17:26:17: WriteRegistryValues. Writing system registry >> values >> WriteRegistryValues: Key: \Software\Company\AppName, Name: Serial, >> Value: 111-1111111 >> Action 17:26:17: RegisterUser. Registering user >> RegisterUser: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} >> Action 17:26:17: RegisterProduct. Registering product >> RegisterProduct: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} >> ... >> So there's no mention of failure in the log. But the value is not >> actually getting written, as I've described in a previous post. > If it were failing then Windows Installer would detect it. > Perhaps its being overwritten later then, either way the SysInternals > tool "Process Monitor" will show you access to that registry and return > codes etc. I'd filter on "RegWrite" or the keyname etc (otherwise > you'll get swamped). > Bye, > Dennis > Dennis Bareis [Microsoft MVP] (dbareis@KillSpam.gmail.com) > http://dennisbareis.com/ > Freeware Windows Installer creation tool (+ "ORCA automation"): > http://makemsi.dennisbareis.com/ Don't forget to make sure that PIDKEY is included in your MSI's SecureCustomProperties property value. Any public property you want to survive the transition from UI to Execute sequence has to be included there or else non-admins will not be able to change those values. Check for log entries on server side that say "Ignoring disallowed property XXXXXXX" each of these property values are tossed out by the Server because they are not in the SecureCustomProperties value (semicolon delimited list). Sincerely, Adrian Accinelli |
|
|
|
#4 (permalink) |
|
Guest
Posts: n/a
|
Hi,
On Tue, 7 Oct 2008 06:04:59 -0700 (PDT), Pavel Minaev <int19h@gmail.com> wrote: >I have an .msi package (created using WiX3, if that is of any >importance) that writes a registry value under HKLM during >installation. Naturally, this requires admin privileges. For local >installs under Administrator, it works fine. However, when I tried to >publish that MSI via a group policy, and then install it on another >machine under Power User account, that registry value was not written. >The installation itself was reported as successfully completed, and >all application files were copied properly; the issue is just with >that registry value. > >What's even more weird is that it does create the parent registry key, >and it does create the registry value underneath... but it's blank - >the proper value (which is the serial number user enters in the >registration dialog) is not entered into it. > >On the other hand, when installing from a published MSI using local >Administrator, the registry value gets written. One could think it is >a permission problem, but 1) It can create all the registry keys and >the value, it just doesn't write the actual value into it - so >permissions are seemingly fine, and 2) If it is a permission problem >nonetheless, how come the installer doesn't complain? I think a better question is where does the serial number's value come from and why this is failing... What does a verbose log say?: http://makemsi-manual.dennisbareis.com/logging.htm Bye, Dennis Dennis Bareis [Microsoft MVP] (dbareis@KillSpam.gmail.com) http://dennisbareis.com/ Freeware Windows Installer creation tool (+ "ORCA automation"): http://makemsi.dennisbareis.com/ |
|
|
|
#5 (permalink) |
|
Guest
Posts: n/a
|
On Oct 8, 10:30*am, Dennis Bareis <dbar...@newsgroup.nospam> wrote:
> I think a better question is where does the serial number's > value come from and why this is failing... * The serial is coming from a dialog, which is described in the .wxs file like this: <Dialog> ... <Control Id="LicenseKey" Type="MaskedEdit" X="20" Y="139" Width="320" Height="15" Property="PIDKEY" Text="[PIDTemplate]" /> ... </Dialog> The dialog is displayed correctly during installation. After that, the registry key is written like this: <Component Id="SerialRegistryKey" Guid="b49a7816-63e4-4d6b-b41d- f50a9ae92e4f" Permanent="yes"> <RegistryValue Root="HKLM" Key="Software\!(loc.Manufacturer)\! (loc.Product)" Name="Serial" Type="string" Value="[PIDKEY]"/> </Component> The log shows that it is being written to the registry: ... Action 17:26:17: WriteRegistryValues. Writing system registry values WriteRegistryValues: Key: \Software\Company\AppName, Name: Serial, Value: 111-1111111 Action 17:26:17: RegisterUser. Registering user RegisterUser: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} Action 17:26:17: RegisterProduct. Registering product RegisterProduct: {CE4E5D5C-3913-4FD5-A431-5995233B0CE9} ... So there's no mention of failure in the log. But the value is not actually getting written, as I've described in a previous post. |
|