2012-03-30 4 views
1

私はc:\program files\program_name\のファイルにアクセスする必要があるプログラムを書いています。プログラムは、ユーザーが不適切にそれを解凍した場合、それは全体のレベルをスキップし、単に\program_name\bin\something.exeだろう、アーカイブから抽出されるため、フォルダをループするにはどうすればいいですか?

私のターゲットファイルは常に、しかし、内部の\program_name\program_name\bin\something.exe

になります。

現在、私は基本的にリストに追加し、その後の内部program_nameがあるかどう見てそれらの一つ一つをループし、リストを使用して、その後、program_nameを含むすべてのフォルダの名前を収集し、c:\program files\の内容を取得していますそれ、等最終的には私は結果に私を導く必要があります。

基本的に私は個々の可能性のために大きなコードのチャンクを作成しています。これについて行くよりスマートな方法がありますか?

答えて

3

あなたは、レジストリに書き込むインストーラを手に入れることができます。その後、ユーザーが奇妙な場所にインストールした場合でも、すべてのファイルとフォルダがどこにあるかを知ることができます。

+0

元のプログラムは、私のデザインではありませんが、それは問題の核心です。しかし、はい、それは確かに私がそれをやる方法です。 –

+0

ああ。私は共感する。たぶん、再帰的な検索を行うのが唯一の選択肢です。必要に応じて:最後の手段として、ユーザーにインストール先を指示させます。 –

0

チャーリーの言葉を拡張すると、元のアプリを統一されたインストーラーでラップすることができます。これはレジストリを書き込んで、ユーザーが決めた場所にアプリを抽出します。インストーラは、インストールする場所をユーザーに求め、その場所に展開します。 InnoSetupは、アンインストール情報の書き込み、アンインストールリンクの設定などを行うことができます。InnoSetupスクリプトのアンインストーラ部分をカスタマイズして、必要なクリーンアップを行い、必要に応じて他の外部プログラムを呼び出すことができます。

InnoSetupでは、実際のインストーラのexeファイルをパッケージ化することができるため、1つのflleを配布するだけで済みます。私はこれが動作することを確認することができます - 私は巨大なファイルを梱包するためにそれを試みたことはありませここで

はInnoSetupへのリンクです:http://www.jrsoftware.org/isinfo.php

関連する問題