.Net 3.5
-i 機能を使用してそれ自体をインストールする機能をサービス exe に組み込みました。私はカスタムインストーラークラスを持っており、ここでオンラインで見つけた一般的な手法を使用しています。そのインストーラー クラスには、基本的に独自のサービスとサービス プロセス インストーラーがあります。
このコードは非常に長い間うまく機能しています。最後に、インストールを拒否した Win 7 64 ビット マシンに遭遇しました。
基本的に、ログはサービスをインストールしていることを示しており、それは成功しています。次に、イベントログを作成しようとしますが、失敗します
インストール フェーズ中に例外が発生しました。System.ComponentModel.Win32Exception: 指定されたサービスは既に存在します
OS を最初から完全に再インストールしたところ、最初にサービスとしてインストールしようとしましたが、同じエラーです。イベントログが既にあると考えているのはなぜですか?
私はすでに他のすべての投稿を読んでおり、レジストリを参照しましたが、サービスまたはイベント ログには何もありません。私は完全な管理者権限を持っています。管理者として cmd を開こうとしてもプロンプトが表示されません。私が知る限り、私は管理者です (ユーザー プロファイルで確認できます)。
EventLog が見つかったかどうかを確認するためのコードを追加しSystem.Diagnostics.EventLog.SourceExists
ましたSystem.Diagnostics.EventLog.DeleteEventSource
。
から EventLog インストーラーを削除しようとしましたServiceInstaller
が、他の理由で失敗し始めます。
何か案は?
これは、私が試した別のインストーラーのサンプル コードで、ここで同じ結果が得られました。
public partial class Service1Installer : Installer
{
public Service1Installer()
{
InitializeComponent();
ServiceProcessInstaller process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
ServiceInstaller serviceAdmin = new ServiceInstaller();
serviceAdmin.StartType = ServiceStartMode.Manual;
serviceAdmin.ServiceName = "Service1";
serviceAdmin.DisplayName = "Service1";
serviceAdmin.Description = "Service1";
Installers.Add(serviceAdmin);
Installers.Add(process );
}
}