Удаление с помощью Wix на GINA приводит к ошибке входа в систему
Проблема: после удаления заменяющего GINA я сразу же после входа в систему выхожу из системы, если использую установщик WIX 3.0.
У меня есть процесс замены входа (GINA) для Windows XP. Он состоит из одного файла, помещенного в системный каталог C:\windows\system32\NewGina.dll, и записи реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\GinaDLL=NewGina.dll), и у меня нет проблем вручную установить его, запустить его, вручную удалить его и войти в систему в обычном режиме.
Я также могу создать установщик с помощью пакета установщика Microsoft в VS2008 и установить, войти, удалить, вход по-прежнему работает должным образом.
Проблема, с которой я столкнулся, заключается в том, что когда я использую установщик Wix, и я устанавливаю, регистрируюсь, удаляю и регистрируюсь, я выхожу из системы сразу после входа в систему. После немедленного выхода из системы я смог подключить удаленный regedit и сбросить реестр. Я пытался выполнить разбор до и после реестров и пытался контролировать процесс, надеясь выяснить, что делает установщик Wix, но действия и изменения (около 35 000) были немного обширны для анализа. Строка реестра (указанная выше) исчезла, и окна должны вернуться к исходному 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 ответ
Эта строка немного беспокоит:
<RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" Action="createAndRemoveOnUninstall">
Если моя память работает правильно, что говорит создать ключ Winlogon во время установки (вероятно, noop), то удалите весь ключ Winlogon во время удаления. В дампе вы можете увидеть, существует ли этот раздел реестра больше? Если моя память верна, возможно, все прошло.
Корректная авторизация в любом случае будет состоять в том, чтобы просто удалить атрибут RegistryKey/@Action. Вы просто хотите, чтобы RegistryValue был установлен и удален. Никаких специальных действий не требуется.