0

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

我有一个 Windows XP 的替换登录进程 (GINA)。它由放置在系统目录 C:\windows\system32\NewGina.dll 中的单个文件和一个注册表项 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\GinaDLL=NewGina.dll) 组成,我手动操作没有问题安装它,运行它,手动卸载它并正常登录。

我还可以在VS2008中使用微软安装包创建安装程序,安装、登录、卸载、登录仍然可以正常工作。

我遇到的问题是,当我使用 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>

4

1 回答 1

2

This line is a little disturbing:

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

If my memory serves correctly that says create the Winlogon key during install (probably a noop) then remove the entire Winlogon key during uninstall. In you dump can you see if that registry key exists any longer? If my memory is correct, it might be all gone.

The correct authoring in any case, would be to just remove the RegistryKey/@Action attribute. You just want the RegistryValue installed and uninstalled. No special actions necessary.

于 2009-06-16T20:00:49.347 回答