インストーラーのブートストラップアプリケーションに取り組んでおり、ユーザーが開いて、指定されたデフォルトとは異なるターゲットディレクトリを選択できるダイアログが表示されます。現在、私はを使用していますCFolderDialog
そのためですが、ユーザーがまだ存在していないフォルダーを選択するには、最初にフォルダーを作成する必要があります。ユーザーがディレクトリを指定したら、それを削除できるようにしたいので、インストーラーを起動したときに、フォルダー自体を作成して、アンインストールのフラグが立てられるようにします。また、ユーザーがいつでも私のブートストラップアプリケーションをキャンセルした場合、ユーザーがフォルダーブラウザーをいじくり回したときから、不要なフォルダーが横になってしまうことは望ましくありません。私が抱えている問題は、ユーザーが新しいターゲットフォルダーを参照しているときに作成したフォルダーを削除しようとすると、共有違反エラーが発生することです。(ディレクトリの作成時刻と、ダイアログが起動されたときのシステム時刻を比較して、ディレクトリを削除しても問題がないことを確認します。)
私が必要としているのは、その共有違反を回避する方法か、ユーザーがまだ存在していないという理由だけでディレクトリを指定するために新しいディレクトリを作成する必要がない別の標準ダイアログです。
編集:私が最初にこれを投稿したとき、私が使用しているフォルダーダイアログが実際にはCodeProjectサイトのXFolderダイアログであることを忘れていました。ユーザーはディレクトリを参照できますが、過去にインストーラーで見たフォルダーブラウザーのダイアログほど直感的ではありません。私が本当に望んでいるのは、ユーザーが新しいフォルダーを移動するフォルダーを参照し、新しいフォルダーを作成せずに、ダイアログの編集ボックスのパスに新しいフォルダーを追加するだけの機能です。
更新XFolderダイアログは、テンプレートを使用する標準のOpen Fileダイアログのカスタマイズであるため、Vista以降のOSでは機能しません。このため、私はこれを他の目的で使用することを断念しなければなりません。私はまだここで解決策を探しています。SHBrowseForFolder()を使用するときに、誰かが(ルートディレクトリではなく)初期ディレクトリを設定する方法を教えてくれれば、それを解決策として使用したいと思います。