メインの実行可能ファイルおよび .dll と同じディレクトリに保存されている .bin ファイルからコードを読み取るプログラムがあります。
そのため、InstallShield を使用してインストールし、ショートカットを自動的に作成しない限り、プログラムは完全に正常に動作します。ショートカットを介してプログラムを開くと、次のようなエラーが表示されます。「options.bin」が「ショートカットが現在配置されているディレクトリ」に見つかりませんでしたが、.exe を直接開くと、取得できません。すべてのエラーとプログラムは完全に実行されます。また、インストール後に (clsid ではなくターゲット ディレクトリを使用して) 独自のショートカットを手動で作成すると、プログラムは完全に機能します。
「options.bin」を開くコードは次のとおりです。
private void btnReadFile_Click(object sender, EventArgs e)
{
try
{
byte[] prog;
using (BinaryReader reader = new BinaryReader(File.Open("options.bin", FileMode.Open)))
{
prog = reader.ReadBytes(6 + 4 * 12 + 2);
}
updateProduct(ProductOptions.createFromBytes(prog));
}
catch (Exception ex)
{
MessageBox.Show("Failed to read from 'options.bin': " + ex.Message);
}
}
インストール中に作成されたショートカットにより、プログラムがショートカットがあるディレクトリで「options.bin」を検索するのはなぜですか? インストール時に、この問題を引き起こさないショートカットを作成するにはどうすればよいですか? (ああ、私はVisual Studio 2012を使用していますが、これにはセットアップオプションが含まれていないため、installshieldを使用しています)