2005.08.29

ASP.NETのセットアッププロジェクトで書き込み可能フォルダを作る

ASP.Netの Webアプリケーションを、本番環境にセットアップする場合、
不要なソースファイル等をインストールしたくないために、
セットアップ/デプロイメントプロジェクトというものを作って対応することがよくある。
こうすれば、プロジェクトの出力(*.dll)とかコンテンツファイル(画像や
JavaScript関連のファイル)のみを配布対象とすることができるようになり、
しかも『プログラムの追加と削除』を使って奇麗にアンインストールすることもできるようになる。


通常はこの“セットアップ”ではセキュリティ確保のため、主に読み出し専用のフォルダ
ばかりが作られてインストールが行われる。

ただ、Webアプリケーションが帳票作成なんかを含んでいると CSVファイルや PDFファイルを
出力(書き込み)できるフォルダが必要になる場合が多いと思う。

元々セットアップの設定でも AllowWriteAccess (True/False)という設定が変更できるのだけれど、
帳票ツールの選択如何ではたいがいもう少し細かな権限設定が必要になる。
このような場合は、セットアップの段階で『カスタム動作』というものを加えて権限制御を
する必要があるということらしい。


さて、そのカスタム動作なのだが、別プロジェクトを作って ~.exe にするなんて方法もあるが、
最も簡単には ~.vbs というファイルに記述したスクリプトを使うことができる。
拡張子が .vbs であるため、てっきり WSH で動作するものかと思っていたが、
どうもそうではないらしいということにようやく気が付いた。
これはあくまでもセットアップ“インストーラ”内でのみ動作するスクリプトであるらしい。

ということで、このスクリプトを利用して権限設定をする方法は、とりあえず以下。

 ・WebApplication から見られる場所に hgehoge.vbs ファイルを作っておく。
 ・カスタム動作:インストール時に、ファイルの追加で hogehoge.vbs を追加する。
 ・ CustomActionDataに “[TARGETDIR]” (おきまり)を設定する。

で、hogehoge.vbsの中身は以下。
(これは Windows Server 2003にインストールする時用?)

Dim oShell

  Set oShell= CreateObject("WScript.Shell")
  oShell.run "cacls.exe" _
    & " " & Session.Property("CustomActionData") & "data" _
    & " /T /E /G IIS_WPG:C"
  Set oShell= Nothing


こんなんで良いのか、疑問はいっぱいあるのですが。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ichikawa