Windowsサービスのセットアッププロジェクトを作成しようとしています。http://support.microsoft.com/kb/816169問題なくセットアップ プロジェクトを作成します。
インストール中に値を取得して、app.configをユーザーの希望する設定に更新できるようにしたい。テキストボックス (A)ダイアログで値を取得します。編集1プロパティプロパティを「TIMETORUN」に設定し、プライマリ出力アクションのカスタムアクションデータプロパティには次のものを入力しました:/TimeToRun="[実行時間]\"ここまでは順調です。セットアップを実行すると、実行時間価値からコンテキスト.パラメータ問題なく収集できました。
app.configを見つけるには、次の値も渡す必要があります。ターゲットディレクトリWindowsインストーラープロパティをカスタムアクションに追加します。ここから物事が崩れ始めます。これを実現するには、上記のカスタムアクションデータ次のように変更する必要があります。/TimeToRun="[実行時間]\" /TargetDir="[ターゲットディレクトリ]\"セットアップを実行すると、次のエラー メッセージが表示されます。
エラー 1001。インストールの初期化中に例外が発生しました。System.IO.FileNotFoundException: ファイルまたはアセンブリ 'file:///C:\Windows\SysWOW64\Files' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。
この問題をグーグルで検索すると、末尾にスラッシュを追加するだけで大きな成功を収めた人が必ず見つかるでしょう。/TargetDir="[ターゲットディレクトリ]\"の一部カスタムアクションデータ残念ながら、これでは問題は解決しません。
私は様々なバリエーションを試しましたカスタムアクションデータ文字列を書いてもどれも機能しませんでした。上書きしたファイルからログ出力してみましたインストール破損箇所を特定する方法がありますが、そこまで進んでいないためログ ファイルは作成されません。エラーが示すように、失敗は初期化ステップ中に発生しています。
セットアッププロジェクトがロードしようとしている依存関係の1つである可能性があるという予感がします。おそらく何らかの形で何かがカスタムアクションデータ弦がうまく弾けず、ターゲットディレクトリ値 (スペースを含む、つまり「C:\Program Files\My Company\Project Name」)。これも、セットアップ プロセスをデバッグできないため、確認できない別の推測です。
もう 1 つ言及しておくべきことがあり、はい、これは別の予感ですが、これは 64 ビット バージョンの Windows のセットアップ プロジェクトの問題である可能性がありますか? 私は Windows 7 Professional を実行しています。
役に立つかもしれないので、依存関係の名前を提供します:
- マイクロソフト .NET フレームワーク
- Microsoft.SqlServer.DtsMsg.dll
- Microsoft.SqlServer.DTSPipelineWrap.dll
- Microsoft.SqlServer.DTSRuntimeWrap.dll
- Microsoft.SQLServer.ManagedDTS.dll
- Microsoft.SqlServer.msxml6_interop.dll
- Microsoft.SqlServer.PipelineHost.dll
- Microsoft.SqlServer.SqlTDiagM.dll
依存関係からわかるように、Windows サービスは DTSX パッケージへの呼び出しをスケジュールしています。
長々と書いてしまい申し訳ありません。何かご協力いただければ幸いです。
ベストアンサー1
答えは驚くほど簡単です。 の最後の引数にCustomActionData
スペースが含まれる場合、引用符と末尾のスラッシュで囲む必要がありますが、末尾のスラッシュの後にスペースも必要です。次のようになります。
/TimeToRun="[TIMETORUN]\" /TargetDir="[TARGETDIR]\ "
解決策と説明はここ。