问题:卸载替换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
<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>
答案 0 :(得分:2)
这条线有点令人不安:
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Action="createAndRemoveOnUninstall">
如果我的内存服务正确,说安装期间创建Winlogon密钥(可能是noop),则在卸载期间删除整个Winlogon密钥。在您转储中,您是否可以看到该注册表项是否存在?如果我的记忆是正确的,它可能会全部消失。
在任何情况下,正确的创作都只是删除RegistryKey / @ Action属性。您只需要安装和卸载RegistryValue。无需采取特殊行动。