我正在开发一个程序,其中包括一个通用引擎、一些程序特定内容和一个自定义自动更新程序,以尽可能有效地处理更新我们内容中的数 GB 价值的媒体。在最近发布的引擎中,我们重新组织了我们的目录结构,而不是将可执行文件安装到 (例如) c:\Program Files\Program\Engine.exe
,它现在位于c:\Program Files\Program\engine\win32\NewEngine.exe
(请注意,在此过程中引擎的名称也发生了变化)。
问题是,为了启动程序,用户需要使用快捷方式,我们将其安装在他们的开始菜单和(可选)他们的桌面上。不过,更新后引擎的移动会破坏这些快捷方式。所以现在我需要找到一种方法来修复用户为了启动程序而拥有的所有快捷方式。
来自 Unix/Mac OS X 背景,我倾向于只创建一个从旧可执行文件名称到新可执行文件名称的符号链接。据我所知,在 Windows 上并没有真正的符号链接(从谷歌搜索,我看到Vista 和更高版本上有符号链接,但这需要在 XP 上工作)。我的假设错了吗?Windows 上是否有与可执行文件的符号链接等效的东西?
想到的其他一些可能的解决方案是:
- 在旧位置创建一个小型可执行文件,在新位置启动真正的可执行文件。是否有任何快速简便的方法来创建一个简单的、无头的可执行文件,它只是启动另一个程序?同样,在 Unix 上,我只是创建一个 shell 脚本,但据我所知,我无法命名一个
.bat
文件.exe
并让它运行,所以这需要一种实际生成.exe
. - 更新后,搜索指向可执行文件的所有快捷方式并进行编辑。是否有任何(有效且可靠)的方法来查找系统上指向给定位置的所有快捷方式并更新它们?
- 上述的组合,带有一个小的可执行文件,它检测到它是从快捷方式启动的,并在启动真正的程序之前编辑该快捷方式。有什么方法可以检测到程序正在从快捷方式启动,从而能够编辑该快捷方式?
这些选项中的任何一个是否有效,如果有效,如何?在 Windows 上执行此类操作的最佳方法是什么?我是否错过了将快捷方式从一个位置重定向到另一个位置的任何其他方法?
编辑添加:我们有一些额外的要求:
- 我们的许多用户都是非技术人员。任何需要用户干预的解决方案都是不可能的。
- 这应该尽可能无缝。每次用户单击快捷方式时都会弹出任何额外的窗口是不可接受的。
- 面对用户可以做的大多数事情,这应该是稳健的,例如重新排列他们的开始菜单或将快捷方式移动到快速启动栏。
- 我们的快捷方式对于程序的运行是绝对必要的,因为它们传递了引擎加载内容所必需的参数(是的,这不太理想;我更愿意解决这个问题,但目前不能)
- 我正在寻找相对快速且易于实施且极其可靠的东西。