カスタム拡張子のファイルにデータを保存する簡単なプログラムを C# で作成しました。ファイルはユーザーの PC のどこにでも保存でき、ユーザーは毎回異なるデータ ファイルをロードできます。
プログラムを exe ファイルに組み込み、サード パーティのインストーラーを使用して展開します。インストーラーは基本的にexeファイルとその依存関係を、ユーザーが実行できる1つのインストールexeファイルにパックします
ユーザーがインストール ファイルを実行すると、基本的なインストールが開始されます。ライセンスに同意し、インストール パスを選択します。</p>
プログラムとその依存関係は、選択したインストール パスに解凍されます。
ここで、プログラムで使用するカスタム ファイル拡張子を、プログラムで常に開くように関連付けたいと考えています。
私が見つけた最も簡単な解決策は、プログラムのインストール後に実行されるbatファイルを使用することでした(これはサードパーティのインストーラーによって処理され、batファイルを依存関係として追加するだけです)。
Bat ファイルは、基本的に次のように Assoc および Ftype コマンドを実行するだけです。
Assoc .MyExtension=MyProgram
Ftype MyProgram="Absolute Path" "%%1"
しかし、それには2つの問題があります:
1) このコマンドには管理者権限が必要です。これは、クライアントが取得するのに問題があります。
2)Ftypeコマンドにはインストールパスへのフルパスが必要ですが、インストールパスはユーザーがインストール時に決定するため、相対パス(batファイルの隣)しかありません。
;tldr;
私の質問は次のとおりです。
1) 管理者の許可なしにそれを達成できますか?
2) 相対パスで Ftype を使用する方法。