環境 WinXP VB6.0
いつもお世話になっております。
作成したプログラムをディストリビューションウイザードで
パッケージ化する時に、インストール端末の指定したディレクトリに、
iniファイルを格納するように設定することは可能でしょうか?
例、
端末Aにプログラムをインストールすると、端末AのDドライブ直下に
iniファイルが格納されて、プログラムがそのiniファイルを参照して
動作する
可能か不可能か、また、可能でしたらその方法をご教授頂けると
幸いです。
(案1)ウィザードの「〜〜含まれるファイル」のところで追加ボタン
ファイルの種類を「*.*(すべて)」にするとINIファイルも表示されるので
それを追加(「セットアップ先」のところで場所指定が可能)。
(案2)そのアプリの起動時に、INIファイルの存在チェックを行い、
ファイルがふぁ存在しない場合は、既定値をもったINIファイルを自分で作成。
普通、出来てもやりません。(パスの相対指定とか駆使して設定してるのを見た事はありますが)
プログラムで使用するファイルはインストール先フォルダか、
その下の階層のフォルダに配置します。
特に Dドライブ直下 とかいうファイルは、ユーザによっていつ削除
されても構わない…と言ってるようなものです。
また、インストール時にインストーラ先フォルダを選択できると
思います。特定の場所にファイルのコピーなどが必要な場合、
バッチファイルを用意して、別にコピーする場合が多いです。
もげさんの(案2)を支持します。
NT系のOSでは特定のドライブ名が常に有効である保証はどこにもありません。
OSがCに入っていると決めてかかるのも間違いです。
そういう意味で、もげさんの(案2)を指示します。
または、その応用で
・iniファイルのテンプレートを作成しておく。
・インストーラはexeと同じフォルダにテンプレートファイルをインストールする用に作る
・exeを起動した際にiniファイルがない場合はそのテンプレートファイルをコピーしてiniファイルを作る
といったところとかでどうでしょうか。
私は、色々、様様な要望に対応するため、標準で
GetSettingA(appname, section, key, default)
SaveSettingA(appname, section, key, setting)
と言う関数を作って
レジストリーで読み書きしたい場合は、其のまま引数を渡してレジストリーで。
自分で作ったiniファイルを使用する場合で、
読み込みたい場合は、GetSettingAを使用し、ファイルが有る場合はファイルから、
ファイルが無いか項目が無い場合はdefaul値を返す。
書き込みたい場合は、SaveSettingAを使用し、ファイルが有って項目が有れば
項目を書き換える、ファイルが有って項目が無ければ、項目を追加する、ファイルが
無ければファイルを作成する。
ファイルの場所は、指定がある場合は指定の場所に、無い場合、単独アプリだけの使用の場合は
App.Pathに、他のアプリと共通で使いたい場合はWINNTの下に置く。
ファイルの形式は一応XMLで、と言うことにしてます。
ツイート | ![]() |