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 で Microsoft インストーラー パッケージを使用してインストーラーを作成することもできますが、インストール、ログイン、アンインストール、ログインは正常に機能します。

私が抱えている問題は、Wix インストーラーを使用し、インストール、ログイン、アンインストール、およびログインすると、ログイン直後にログアウトされることです。すぐにログアウトした後、リモート regedit に接続してレジストリをダンプすることができました。Wix インストーラーが何をしていたかを発見することを期待して、レジストリーの前後で比較を試みましたが、アクションと変更 (約 35,000) を分析するのは少し広範囲でした。レジストリ行 (上記) はなくなり、Windows は元の msgina.dll に戻るはずです。

プロジェクトの残りの部分は Wix Installer を使用しているので、それを使用したいと考えています。

これを機能させ、自動ログオフを回避する方法についてのアイデアはありますか?

ありがとう

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

この行は少し気がかりです:

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

インストール中にWinlogonキーを作成するという私の記憶が正しく機能する場合(おそらくnoop)、アンインストール中にWinlogonキー全体を削除します。ダンプで、そのレジストリ キーがもう存在するかどうかを確認できますか? 私の記憶が正しければ、全部なくなっているかもしれません。

いずれにせよ、正しいオーサリングは、RegistryKey/@Action 属性を削除することです。RegistryValue をインストールしてアンインストールするだけです。特別な操作は必要ありません。

于 2009-06-16T20:00:49.347 に答える