0

インストーラーのブートストラップアプリケーションに取り組んでおり、ユーザーが開いて、指定されたデフォルトとは異なるターゲットディレクトリを選択できるダイアログが表示されます。現在、私はを使用していますCFolderDialogそのためですが、ユーザーがまだ存在していないフォルダーを選択するには、最初にフォルダーを作成する必要があります。ユーザーがディレクトリを指定したら、それを削除できるようにしたいので、インストーラーを起動したときに、フォルダー自体を作成して、アンインストールのフラグが立てられるようにします。また、ユーザーがいつでも私のブートストラップアプリケーションをキャンセルした場合、ユーザーがフォルダーブラウザーをいじくり回したときから、不要なフォルダーが横になってしまうことは望ましくありません。私が抱えている問題は、ユーザーが新しいターゲットフォルダーを参照しているときに作成したフォルダーを削除しようとすると、共有違反エラーが発生することです。(ディレクトリの作成時刻と、ダイアログが起動されたときのシステム時刻を比較して、ディレクトリを削除しても問題がないことを確認します。)

私が必要としているのは、その共有違反を回避する方法か、ユーザーがまだ存在していないという理由だけでディレクトリを指定するために新しいディレクトリを作成する必要がない別の標準ダイアログです。

編集:私が最初にこれを投稿したとき、私が使用しているフォルダーダイアログが実際にはCodeProjectサイトのXFolderダイアログであることを忘れていました。ユーザーはディレクトリを参照できますが、過去にインストーラーで見たフォルダーブラウザーのダイアログほど直感的ではありません。私が本当に望んでいるのは、ユーザーが新しいフォルダーを移動するフォルダーを参照し、新しいフォルダーを作成せずに、ダイアログの編集ボックスのパスに新しいフォルダーを追加するだけの機能です。

更新XFolderダイアログは、テンプレートを使用する標準のOpen Fileダイアログのカスタマイズであるため、Vista以降のOSでは機能しません。このため、私はこれを他の目的で使用することを断念しなければなりません。私はまだここで解決策を探しています。SHBrowseForFolder()を使用するときに、誰かが(ルートディレクトリではなく)初期ディレクトリを設定する方法を教えてくれれば、それを解決策として使用したいと思います。

4

3 に答える 3

1

あなたの目的のために、ユーザーにベースディレクトリ、例えば「C:\ ProgramFiles」(必要に応じてプロセスで作成する)を選択させ、そのサブディレクトリ(あなたが追加する名前)にインストールすることはおそらく理にかなっています選択したパスを使用して、インストーラーに作成させます)。ユーザーがベースを選択した後、結合されたパスを表示します。このように、ユーザーは、作成しているディレクトリに対して自分が責任を負っているとは感じませんが、それでも宛先を適切なレベルで制御できます。

于 2009-04-23T03:20:59.850 に答える
0

_BIF BROWSEINCLUDEFILES または BIF NONEWFOLDERBUTTONを指定せずに SHBrowseForFolder を使用できます_

于 2009-05-13T15:30:18.897 に答える
0

このようなダイアログ ウィンドウは、MFC でも他のテクノロジでも見たことがありません。Shog9 に同意します。ベース ディレクトリの選択とディレクトリの作成を分離する方法をユーザーに提供する必要があります。

于 2009-04-23T11:57:02.947 に答える