在GINA上使用Wix卸载会导致登录失败

时间:2009-06-16 15:18:42

标签: installer wix winlogon gina

问题:卸载替换GINA后,如果我使用WIX 3.0安装程序,我会在登录后立即注销。

我有一个Windows XP的替换登录过程(GINA)。 它由放在系统目录中的单个文件组成    C:\ WINDOWS \ SYSTEM32 \的newgina.dll 和注册表项 (HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ WindowsNT的\ CURRENTVERSION \ Winlogon中\中GinaDLL =将Newgina.dll) 我手动安装,运行,手动卸载和正常登录都没有问题。

我还可以使用VS2008中的Microsoft安装程序包创建安装程序,并且安装,登录,卸载,登录仍然可以正常运行。

我遇到的问题是当我使用Wix安装程序,安装,登录,卸载和登录时,我会在登录后立即注销。立即注销后,我能够连接远程注册表并转储注册表。我尝试在注册表之前和之后进行差异化,并且我尝试了进程监视器,希望能够发现Wix安装程序正在做什么但是动作和更改(大约35,000)有点广泛分析。注册表行(上面列出)已经消失,Windows应该恢复到原始的msgina.dll

由于项目的其余部分使用Wix安装程序,我希望使用它。

有关如何使其工作并避免自动注销的任何想法?

由于

APB

我的Wix脚本看起来像

    

<Package InstallerVersion="200" Compressed="yes" />

<Condition Message="This application is only supported on Windows XP">
  <![CDATA[(VersionNT = 501)]]>
</Condition>

<InstallExecuteSequence>
  <ScheduleReboot After="InstallFinalize"/>
</InstallExecuteSequence>

<Media Id="1" Cabinet="NewGina.cab" EmbedCab="yes" />

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="SystemFolder">
    <Component Id="NewGina" Guid="cdbdfbe9-8137-4305-98cb-a05618ea0ade" > 
      <File Source="..\NewGina\Release\NewGina.dll" Checksum="yes" />     
    </Component>
    <Component Id="RegistryEntries" Guid="cdbdfbe9-8137-4305-98cb-a05618ea0adf" >
      <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Action="createAndRemoveOnUninstall">
        <RegistryValue Type="string" Name="GinaDLL" Value="NewGina.dll" />
      </RegistryKey>
    </Component>
  </Directory>
</Directory>

<Feature Id="NewGina" Title="NewGina" Level="1" >
  <ComponentRef Id="NewGina" />
  <ComponentRef Id="RegistryEntries" />
</Feature>

1 个答案:

答案 0 :(得分:2)

这条线有点令人不安:

<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Action="createAndRemoveOnUninstall">

如果我的内存服务正确,说安装期间创建Winlogon密钥(可能是noop),则在卸载期间删除整个Winlogon密钥。在您转储中,您是否可以看到该注册表项是否存在?如果我的记忆是正确的,它可能会全部消失。

在任何情况下,正确的创作都只是删除RegistryKey / @ Action属性。您只需要安装和卸载RegistryValue。无需采取特殊行动。