2012-02-14 14 views
1

インストールの実行時にC:\ ProgramDataのユーザーのアクセス許可を変更したい。 WRITE権限を追加するだけです。私はmsiテーブルを編集するためのVBスクリプトを使用しています。vbスクリプトを使用してmsiインストーラでディレクトリのACLを設定する方法は?

このクエリは正常に実行されていますが、行は追加されていますが、インストーラは権限を設定していません。私はここでALLの許可設定を使用していますが、私は正しい一般的な読み取り/書き込み値が何か分かりません。

クエリ=私はこのための作業例を見つけることができません

"LockPermissionsLockObjectTableUserPermission)VALUES( 'COMMONAPPDATAFOLDER'、 'ディレクトリ'、 'ユーザー'、268435456)。INSERT INTO"それはかなり一般的なシナリオでなければなりません。

C:\はProgramData \ CompanyFoo \ Fooの製品名

が、私はわからない私はCOMMONAPPDATAFOLDERは、このような程度のパスに解決されることと思います。私は "CompanyFoo"ディレクトリのパーミッションを設定したいと思っていますが、どうすればいいのかわかりません。

編集:これはビルドスクリプト用であり、カスタムmsiアクションではありません。私の問題は、私がinstallshieldのようなインストールフレームワークを使用していないことです。私は、Visual Studioのデプロイメントプロジェクトの欠点を修正しています。

+0

いいえ、システムフォルダのアクセス許可を変更するのは一般的なシナリオではありません。それは推奨されません。 –

+0

私はこれをCommonAppDataFolder/Company/Productレベルで何度もやってきました。問題は、ロックダウンされた環境に入り、アプリケーションがマシン上の他のプロファイルで利用できると期待されるファイルを保存したときに、どこに置くことができますか?私が気付いていない別の場所はありますか? –

+0

私は、開発が仮想ストアにドキュメントをアップロードしてダウンロードできるサービスを書いているが、それをやりたいとは思っていなかったことを示そうとしました。彼らは代わりに製品データフォルダを開いたばかりです。基本的には、Public Documents \ Company \ Productタイプの構造が必要でした。 –

答えて

0

lockpermissionsテーブルに行を挿入するカスタムアクションが必要なのはなぜですか?ドメインとユーザーの列はFormattableであるため、MSIに直接作成してください。

+0

これを行う必要があるたびに、orcaでmsiを編集することはできません。これは自動ビルドのためのものです。 –

+0

これは「行動」でもありません。これはビルドスクリプトの一部です。 –

+0

オリジナルのMSIを構築するためにどのツールを使用していますか? –

1

私はついにそれを働かせました。 vs2010のインストールプロジェクトでは、COMMONAPPDATAFOLDERは実際にはc:\ programdataではなく、プロジェクト設定でfoocompanyを設定するのはc:\ programdata \ foocompanyです。これは正しいことです。 268435456 =すべての権限。

'COMMONAPPDATAFOLDER 
query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Everyone', 268435456)" 
Set view = database.OpenView (query)   
view.Execute 

query = "INSERT INTO `LockPermissions` (`LockObject`, `Table` , `User`, `Permission`) VALUES ('COMMONAPPDATAFOLDER', 'CreateFolder', 'Administrators', 268435456)" 
Set view = database.OpenView (query)   
view.Execute 
関連する問題