удаление с помощью Wix на GINA приводит к ошибке входа в систему - PullRequest
0 голосов
/ 16 июня 2009

Проблема: после удаления заменяющего 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) были немного обширны для анализа. Строка реестра (указанная выше) исчезла, и 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 Ответ

2 голосов
/ 17 июня 2009

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

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

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

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

...