удаление с помощью 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, я надеюсь использовать его.

Любые идеи о том, как заставить это работать и избежать автоматического выхода из системы?

Спасибо

АПБ

Мой скрипт 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>


person Community    schedule 16.06.2009    source источник


Ответы (1)


Эта строчка немного настораживает:

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

Если мне не изменяет память, там сказано: создайте ключ Winlogon во время установки (вероятно, noop), а затем удалите весь ключ Winlogon во время удаления. В вашем дампе вы можете увидеть, существует ли этот раздел реестра? Если мне не изменяет память, возможно, все это исчезло.

В любом случае правильным авторингом было бы просто удалить атрибут RegistryKey/@Action. Вы просто хотите установить и удалить RegistryValue. Никаких специальных действий не требуется.

person Rob Mensching    schedule 16.06.2009
comment
Спасибо - Вы правы. Удаление Action=createAndRemoveOnUninstall решило проблему - person ; 17.06.2009