web-dev-qa-db-ja.com

カスタムWindowsサービスのインストール時のエラー1001

Framework 4.0で実行し、VS 2015で実行するWindowsサービスを作成しました。セットアッププロジェクト(無料のInstallshieldバージョン)も作成しました。

サービスはインストール後にservices.mscの下に表示されなかったため、他の投稿によると、InstallShieldのプライマリ出力を「インストーラークラス」としてマークする必要がありましたが、その場合、セットアップを実行するとエラー1001が表示されます。 EXE。

この post は、「エラーコード1001は常にインストーラクラスのカスタムアクションの失敗を意味する」と述べています。カスタムアクションを使用しないでください。現在、カスタムアクションを使用していません。

このサイトのほとんどのソリューションには、Installshield 2010の手順が記載されており、手順は2015年には機能しません。

このエラーは、開発マシンとすべてのクライアントマシンの両方に表示されます。助言がありますか?

編集:

イベントビューアーに「復元ポイントの作成に失敗しました(プロセス= C:\ Windows\system32\msiexec.exe/V;説明=インストール済みのアプリ名。;エラー= 0x80070422)」が表示されます。

20

私は問題を取り除くために何かを見つけましたが、それは新しい質問を作成します。

私の問題の原因は、ServiceInstallerのAfterInstallから次のコードを削除しなければならなかったことです。

new ServiceController(ServiceInstaller.ServiceName).Start();

これは、インストールされたサービスを自動的に開始するために追加されました。今のところ、私は手動でサービスを開始します。

0

これとまったく同じ問題がありました。突然VisualStudio 2013および新しいInstallShield LEにアップグレードし、インストールパッケージをビルドすると、不可解な1001エラーで失敗します。

決定的な答え

決定的な答えを見つけました。 InstallShieldLEで「インストーラクラス」のチェックボックスを選択することはできなくなりました。 その項目のチェックを外す必要があります

このダイアログボックスを開くには、アプリケーションデータの指定>ファイルプライマリ出力を右クリックして、[プロパティ]を選択します。

uncheck Installer Class

以前は、選択する必要がありました:今は選択しないでください

以前(Visual Studio 2012およびそのアイテムを選択する必要がある前、またはサービスのインストールが失敗する。これは非常にひどいです。

ここで、InstallShield LEプロジェクトの次のツリー項目に移動し、[サービス]ノードをダブルクリックする必要があります。 services node

その後、サービス項目が左側に表示され(この全体がひどいUXとUIであることに言及しましたか?)、右クリックしてサービスを追加できます。

add service

サービスを追加するために表示されるメニュー項目を選択すると、インストーラーの詳細を設定できるフォームが表示されます。

installation details

これを実行してMSIを再構築すると動作し、これにより1001エラーが解決されます。

これはすべて、元のInstallShield Devが解決できなかったひどい時間の浪費でした。残念です。

38
raddevus

ビルドマシンに.NET 4.6がインストールされている場合、InstallShieldのインストーラークラスのサポートに伴うバージョン管理のバグを回避するために、2015バージョンの限定版が必要になります。 (1001エラーには多くの原因があるため、これは保証された修正ではありません。)InstallShield 2015 Limited EditionはVisual Studioのコミュニティエディションをサポートしないことに注意してください。

7
Michael Urman

これにより、InstallShield 2015 LEインストーラープロジェクトを使用して、プライマリ出力をインストーラーとして設定して.NET Windowsサービスをインストールしようとしたときにエラー1001が発生する場合があります。

これは、.NET 4.6がWindows 10にインストールされている場合の既知のバグです。

https://flexeracommunity.force.com/customer/articles/en_US/ISSUE/HOTFIX-Install-Fails-With-Error-1001-When-a-NET-Installer-Class-Component-is-Present- in-InstallShield-2015-SP1

3
Warren R

私はまだコメントできないので、私はあなた自身の受け入れられた答えに対する答えを返信します。質問してからしばらく経ちましたが、ここに行きます。

インストール後に自動起動する場合は、手順3に進みます。ターゲットシステムを設定します。 [サービス]タブを選択します。 [サービス]を右クリックして、サービスを追加します。プライマリ出力で任意のサービスを見つけることができるはずです。追加すると、自動起動などに関連するさまざまな設定を選択できます。お役に立てば幸いです。

ちなみに、私はまだ1001の答えを探しています。

1
LuqJensen

少し掘り下げた後、インストーラーが(インストールしているものに関連する)サービスを削除しようとすると、そのエラーで失敗することがわかりました-そして(サービス)はもうありません。ユースケースシナリオ-Windowsサービスも含む複雑なソリューションのMVS2015からインストールを開始します。ソリューションのバージョンを変更すると、インストーラーはそのトラックで停止し、アプリが以前にインストールされたことを検出し、異なるバージョンであるためアンインストールできません。これを示すダイアログボックスが表示され、終了します....しかし、サービスがアンインストールされました。 Windowsがアンインストールするサービスを見つけられないため、インストールまたはアンインストールを試みるとエラー1001で失敗します。

誰かがより良い解決策を持っている場合、それを投稿してください。しかし、私の解決策はscコマンドラインユーティリティを使用することです。 scは、コマンドラインからサービスを操作するために使用できるユーティリティです(ヘルプを表示するにはscと入力します)。したがって、scを使用して(名前で)サービスを追加すると、アンインストールまたは通常どおりインストールできます。コマンドに有効なbinパスが必要です-ただし、任意の有効なパスが受け入れられます。

sc <server> create [service name] [binPath= ] <option1> <option2>...

例:

sc create MyService binPath= C:\Windows\Explorer.exe
[SC] CreateService SUCCESS
0
Gogu CelMare

.NET 4.5をターゲットとするInstallShield LE 2015でVS 2012を使用していますが、それを機能させるには「Installerクラス」のチェックを外す必要があります。

0
kmxr

このエラーは、ターゲットの.NETフレームワークがインストールされていない場合に発生します。

同じ開発マシンをターゲットにしている場合は、そのサービス(EXE)がそのマシンですでに実行されているかどうかを確認してください(実行しないでください)。

0
Ajit Medhekar