3

InstallShield 2009で構築されたMSIインストールがあります。これは、サービスexeを含むコンポーネントで「.NETインストーラークラス」を「はい」に設定することにより、.NETサービスをインストールします。ファイルとexeを含むこの基本インストールはOKです。元のインストールでサービスexeファイルを更新する小さな更新MSPを作成しました。基本インストールを含むシステムでMSPを実行すると、小さな更新のMSPインストール中にサービスを再インストールしようとしているため、エラー1001が発生します。

この問題に対するFlexeraの公式の対応は、.NET実行可能ファイルを更新する必要がある場合は、コンポーネント「.NETインストーラークラス」を「いいえ」に設定し、独自のカスタムアクションを作成する必要があるというものです。Flexeraは、「。NETインストーラークラス」を「はい」に設定すると、インストールのMSP更新を作成できないことをどこにも文書化していないことも認めています。ベースインストールはリリースされており、それに対してアップデートを作成する必要があるため、元に戻ってベースインストールを変更することはできません。MSPのインストール中にサービスをアンインストールするカスタムアクションをMSPアップデートに含めることで、自分で回避策を考え出しました。これにより、小さなアップデートMSPがインストールされますが、この回避策は、ARPからMSPをアンインストールする場合には機能しません。

将来のインストールでこの問題に対処するための最良の方法を知る必要があります。小さな更新MSPを使用して後でサービスを簡単に更新できるような方法で、.NETサービスをどのようにインストールしますか?

4

2 に答える 2

1

サービスはMSIの方法を使用してインストールする必要があります。intallerクラスはひどく壊れやすいので、自作のカスタムアクションはそれほど良くない可能性があります(制御が簡単です)。サービスオプションは、コンポーネントの詳細設定の下にあります。

于 2010-09-16T14:23:09.720 に答える
0

最善の方法は、WindowsUpdateと同様のMSBITS(Microsoftのバックグラウンドインテリジェント転送サービス)を使用することです。

もちろん、メインアプリはこのサービスを使用できる必要があるため、現在のアプリをアンインストールしてBITSをサポートする新しいバージョンを再インストールしない限り、この回答がシナリオで機能するかどうかはわかりません。

BITSと.NETでの使用の詳細については

http://msdn.microsoft.com/en-us/library/aa362708(VS.85).aspx
http://msdn.microsoft.com/en-us/magazine/cc188766.aspx
http://www.codeproject.com/KB/IP/sharpBITS.aspx
于 2010-09-15T19:52:48.333 に答える