デフォルトでテキストボックスインストーラー画面に仮想ディレクトリを表示するWebセットアッププロジェクトがあります。仮想ディレクトリ名をユーザーが編集できず、常にデフォルトでmsiで設定した名前になっていることを望みます。これはどのように達成できますか?
8 に答える
ユーザーに仮想ディレクトリを変更させたくない場合は、ユーザー インターフェイスから [インストール アドレス] ダイアログを削除するだけです。
- インストーラー プロジェクトを右クリックし、[ユーザー インターフェイス] を選択します。
- 「開始」ノードを展開します。
- 「インストールアドレス」を右クリック。
- 「削除」を選択
通常、インストール アドレス ダイアログで選択される Web サイト、仮想ディレクトリ、アプリケーション プールに別のパラメーターが必要な場合は、他の人が説明したように、カスタム アクションでオーバーライドできます。
ただし、私の経験では、カスタム アクションは、ユーザー入力を求めるダイアログの後に実行されるため、ユーザーが変更できるデフォルトの設定には役立ちません。
ダイアログで必要に応じてユーザーがオーバーライドできるいくつかのデフォルトを設定する最も簡単な方法は、次の手順を実行することです。
- ウェルカム ページを削除します。
- Textboxes ダイアログを追加します (「Textboxes (A)」など)。
- すべてのテキスト ボックスの Visible プロパティを false に変更して、テキスト ボックスが表示されないようにします。
- ウェルカム ページのように見えるように、BannerBitmap および BodyText プロパティを変更します。
- 「Edit***<n> Property」で上書きしたい必要なプロパティを設定し、「Edit <n>***Value」でデフォルト値を設定します。
最も有用なプロパティ (IMHO) は次のとおりです。
TARGETDIR - ファイルのコピー先。
TARGETVDIR - 指定したサイトに作成される仮想ディレクトリ。
TARGETAPPPOOL - 使用するアプリケーション プール (注: これは存在する必要があり、作成されません)
TARGETSITE - 仮想ディレクトリが作成される Web サイト (注: これは Web サイトのメタベース値です... 例: : "/LM/W3svc/2". サイトが存在する必要があることにも注意してください)。
インストーラーのプロパティの完全なリストは、ここにあります。
IIS セットアップをより適切に制御したい場合は、プロジェクトを標準の Windows インストーラー プロジェクトに変更し、カスタム インストール アクションを作成して、プログラムで AppPools を作成できるようにすることをお勧めします。これらのものをプログラムで作成することを理解し始めるのに適した場所は、こちらです。
このようにする最大の理由は、プロンプトの後にカスタム アクションが実行されますが、インストーラーがプロンプトを表示する前にアプリ プールと Web サイトを作成する必要があるためです。
理論的には良さそうですが、少なくとも AppPool の設定では機能しません。vs2008 Web セットアップ プロジェクトで、apppool を設定するカスタム アクションがあります (ちなみに、インストーラーが VS2005 でビルドされている場合は正常に動作します)。
DirectoryEntry IISVdir = new DirectoryEntry(String.Format("IIS://{0}{1}/{2}", strServer, strRootSubPath, Vdir));
IISVdir.Properties["AppPoolId"].Value = appPool;
IISVdir.CommitChanges();
インストーラーはダイアログなしで実行されますが (インストール アドレスの UI ノードが削除されています)、仮想ディレクトリに設定された AppPool は DefaultAppPool になります。
私のヘルパー クラスの他のカスタム アクションは実行され、機能します。
ですから、他にも魔法の呪文が必要なはずです。
ありがとう。
Context.Parameters を使用して仮想ディレクトリを取得するには
- Add a Custom Action to Install node (カスタム アクションの追加方法を知りたい場合は、このURLを使用してください)
- カスタム アクションを右クリックし、プロパティ ウィンドウを選択します。
- CustomActionsData プロパティには、/targetvdir="[TARGETVDIR]" を設定します。
- インストーラー クラスで、Context.Parameters["targetvdir"] によって仮想ディレクトリ名を取得できます。これがお役に立てば幸いです:)
セットアッププロジェクトを選択し、[表示]>[エディター]>[ユーザーインターフェイス]を選択し、[インストールアドレス]ダイアログを選択して削除します。
編集:
Shayが指摘しているように、ユーザーはコマンドラインからデフォルトのインストール場所を上書きできます。これをオーバーライドするには、InstallExecuteSequenceでTARGETDIRプロパティを設定する必要があります。残念ながら、このシーケンスをVisualStudioから変更することはできません。Orcaを使用する必要があります。
- セットアッププロジェクトをビルドします。
- OrcaからMSIファイルを開きます。
- ソース「TARGETDIR」(引用符なし)、宛先フォルダーのターゲット、およびアクションの一意の名前を使用して、タイプ51(プロパティの設定)の新しいカスタムアクションを作成します(慣例では、最初の下線付きのGUIDを使用します)。
- InstallExecuteSequenceに、アクションの一意の名前、条件の「NOT Installed」、およびTARGETDIRを使用する前のシーケンス番号を使用して新しい行を作成します(作成したサンプルでは750が最初に使用されたため、555のシーケンスを使用しました) 。
Lo-tech ソリューション: notepad++ で vdproj ファイルを編集して仮想ディレクトリを設定し、ユーザー インターフェイス エディターから [インストール アドレス] ダイアログを削除します。
Org はオープン ソースまたは GPL オープン ソースを許可していません。
解決策: * カスタム アクションを編集して (右クリック > ビュー > カスタム アクション)、仮想ディレクトリとパスを修正します customactiondata を変更します。
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"
に:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]"
ユーザー インターフェイスからインストール アドレスを削除し、カスタム インストールに情報を渡すコンポーネントをセットアップするだけでかまいません。
- msbuildtasks を使用して msbuild のラッパーを作成する