0

我有一个从.bin 文件中读取代码的程序,该文件与主可执行文件和.dll 存储在同一目录中。

因此,该程序完全可以正常工作,除非我使用 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