我有程序从.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的原因)