2017-01-27 4 views
1

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の値を渡すことです。それ以外の場合は動作しないようです。

私が試してみました:

  1. ではなく、直接私のコマンドラインの一部としてINSTALLDIRの値を渡し、CustomActionDataを使用していません。
  2. 類似の結果を持つ「プロパティ値のパス」カスタムアクションの使用。

私は上記のオプション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の値を渡すために何ができる方法を知っていますか?

+0

CustomActionDataは、アクション内のプロパティの取得にのみ関連します。 EXEを実行すると、即時シーケンス中にコマンドライン引数が記録され、代替の試み「1」が機能するはずです。その後、ログには何が表示されましたか?さまざまなEXEタイプはコマンドライン引数とは関係がないはずなので、私は "2"の助けを期待しません。 –

+0

あなたのコメントをありがとう、私は試行 "1"になっている結果で質問を更新しました。 –

答えて

0

最後に、プロパティを渡すカスタムアクションではなく、aspnet_iisregがパラメータを期待しているという問題が見つかりました。

INSTALLDIRは、私はハードI代わりc:\Testを通過したインストールパスを符号化されたスラッシュ(例えばGR。c:\Test\)、文字列を通過しています。

解決策は、後続のスラッシュを削除して新しいプロパティに値を格納する別のカスタムアクションを作成することでした。これをaspnet_iisregのパラメータとして使用できます。

ところで、Michael Urmanが述べたように、CustomActionDataを使用する必要はありませんでした。ありがとう。

関連する問題