トップ回答者
Setup Projectで、配置するでデフォルトフォルダーを指定するにはどうしたらいいのでしょうか

質問
-
Windows7(64bit)、Visual Studio2010でC++(MFC 32bit) のプログラムを開発しています。
標準のSetup Projectに取り込み問題な作成出来るのですが、配布先でインストールするときに、配置先を選定するダイアログがデフォルトでは、
C:\Program Files Folder(X86) になります。 このデフォルトフォルダーを任意のフォルダーに設定できないでしょうか。
プログラムの仕様で、中間データを文字データファイルとして持っているのですが、状況に応じて、この中間データを書き換える必要があります。
デフォルトのフォルダーだと、セキュリティー上、権限が問題で書き換えが出来なくなってしまいます。
苦肉の策で、インストールする際に、C:\ に展開することで可能にしています。 しかし、紛らわしいので、デフォルトフォルダをC:\ にしたいのですが。
Setup Projectの「ファイルシステム」-「対象コンピュータ上にファイルシステム」「アプリケーションホルダー」のプロパティーで
DefaultLoation [Program Files Holder][Manufatuer]\[ProductName] の設定で可能のようですがいかがでしょうか。
よろしくご教授ください。
回答
すべての返信
-
ルートディレクトリに指定する方法は分かりました。Setup Project の「ファイルシステム」-「対象コンピュータ上にファイルシステム」「アプリケーションホルダー」のプロパティーで
DefaultLoation C:\[Manufatuer]\[ProductName] の設定で、配置設定のダイアログで、デフォルトがC:\ になりました。
しかし、仰るように、ユーザーがインストール先をProgram Filesに変更すると問題です。
詳しく経緯を説明します。 今まで開発してきたプログラムは、MFCのドキュメントビューを利用したプログラムです。
しかし、Viewを作成するとき、モニター出力とプリンタを別々に作らなければならなく、非常に時間がかかり、保守上も問題でした。
そこで、CHtmlViewの参考をまねて、出力をHtmlファイルにしました。これで、標準のブラウザーで表示も印字・プレビューが簡単に出来るようになりました。
出力ファイルをアプリケーションフォルダー下に \data フォルダーをSetup Projectで作り、このフォルダーに書き込む方法としました。
しかし、配布用のプログラムでテストした所、書き込みエラーが出てしまい、いろいろといじっていたわけです。
今までは、Windows XPを使って開発してきたため、なんとか使えていましたが、Windows 7に最近変更したので、このセキュリティーの問題が発覚したようです。
ご紹介いただいた 特別なフォルダーとカスタム フォルダー を読みSetup Projectでカスタムホルダーの作り方が分かりましたが、アプリケーションの中から、このフォルダーを
読んだり書き込んだりする方法がよくわからず困っています。 絶対パスで指定するには、ユーザー側のOSに依存するようで、固定することが出来ないようです。
OS毎のパスを書かなければいけないでしょうか?
-
Vista以降のみならSHGetKnownFolderPath()、XP以前も対象とするのならSHGetFolderPath()で適切なPathを取得してください。
-
SHGetFolderPath() 難解な関数のようですね、早速Helpなどより勉強してみます。
いろいろありがとうございました。