aspnet_regiis.exeを使用して構成ファイルを暗号化するために使用しているカスタムアクション(RunEncryption2)があります。私が使用しているカスタムアクションタイプは、システムコンテキストでの遅延実行を使用してディレクトリを参照するパス(初期タイプ34)(最終タイプは3106です)を持つEXEです。暗号化するファイルはINSTALLDIRにありますので、RunEncryption2 = [INSTALLDIR]を設定しているSetプロパティカスタムアクション(SetRunEncryption2、type 51)があります。私の2つのカスタムアクションは次のようになります。遅延カスタムアクションでaspnet_regiis.exeを実行し、INSTALLDIRプロパティの値を渡す方法は?
SetRunEncryption2
Property Name: RunEncryption2
Property Value: [INSTALLDIR]
RunEncryption2
Working Directory: WindowsFolder
File Name & Command line: [WindowsFolder]Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "[CustomActionData]" -prov "DataProtectionConfigurationProvider"
インストーラを実行すると、しかし私は、ファイルがまったく暗号化を取得していない、何のエラーを取得していません。私は、ログを確認すると、私は次を得る:
MSI (s) (34:C0) [17:32:11:356]: Executing op: CustomActionSchedule(Action=RunEncryption2,ActionType=3106,Source=C:\WINDOWS\,Target=C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "" -prov "DataProtectionConfigurationProvider",CustomActionData=C:\Test\)
ログから私はCustomActionDataプロパティは、しかし、それはコマンドの一部として含まれていない、正しく設定されていることがわかります。
この時点で、コマンドを実行する唯一の方法は、ハードコードされたINSTALLDIRの値を渡すことです。それ以外の場合は動作しないようです。
私が試してみました:
- ではなく、直接私のコマンドラインの一部としてINSTALLDIRの値を渡し、CustomActionDataを使用していません。
- 類似の結果を持つ「プロパティ値のパス」カスタムアクションの使用。
私は上記のオプション1を実行すると、私はログに1722エラーが表示されます。
MSI (s) (C4:50) [12:49:46:968]: Note: 1: 1722 2: RunEncryption2 3: C:\WINDOWS\ 4: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "C:\Test\" -prov "DataProtectionConfigurationProvider"
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action RunEncryption2, location: C:\WINDOWS\, command: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "C:\Test\" -prov "DataProtectionConfigurationProvider"
MSI (s) (C4:50) [12:49:56:841]: Product: TestEncryption -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action RunEncryption2, location: C:\WINDOWS\, command: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef "connectionStrings" "C:\Test\" -prov "DataProtectionConfigurationProvider"
誰も私が正しく、このコマンドを実行し、動的にINSTALLDIRの値を渡すために何ができる方法を知っていますか?
CustomActionDataは、アクション内のプロパティの取得にのみ関連します。 EXEを実行すると、即時シーケンス中にコマンドライン引数が記録され、代替の試み「1」が機能するはずです。その後、ログには何が表示されましたか?さまざまなEXEタイプはコマンドライン引数とは関係がないはずなので、私は "2"の助けを期待しません。 –
あなたのコメントをありがとう、私は試行 "1"になっている結果で質問を更新しました。 –