0

メインの実行可能ファイルおよび .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を使用しています)

4

0 に答える 0