C# 改变相对路径的快捷方式?

C# 改变相对路径的快捷方式?,c#,setup-deployment,C#,Setup Deployment,我使用过Flexera的Installshield,除了它在“开始”菜单和桌面上的快捷方式外,它似乎在大多数情况下都能工作 当程序启动并返回打开sqlite数据库文件的错误时,就会出现问题 通过从program files文件夹运行实际的.exe,以及如果创建手动快捷方式,可以修复此问题 我注意到,自动快捷方式的目标位置与手动快捷方式的目标位置相同 有什么想法吗?我无法为您的具体问题提出直接的解决方案。另一方面,我过去在使用不同的Windows installer软件包时遇到了一些路径/相对引用

我使用过Flexera的Installshield,除了它在“开始”菜单和桌面上的快捷方式外,它似乎在大多数情况下都能工作

当程序启动并返回打开sqlite数据库文件的错误时,就会出现问题

通过从program files文件夹运行实际的.exe,以及如果创建手动快捷方式,可以修复此问题

我注意到,自动快捷方式的目标位置与手动快捷方式的目标位置相同


有什么想法吗?

我无法为您的具体问题提出直接的解决方案。另一方面,我过去在使用不同的Windows installer软件包时遇到了一些路径/相对引用问题,我通过运行一个程序将所有必需的信息传递给安装程序来解决这些问题

举例说明我的意思:

  • 在开始安装之前执行一个小程序。它检索所有必需的信息(例如,桌面的路径)并将其写入临时位置(例如,Windows注册表)

  • 主安装包启动后,读取/删除 来自临时位置的信息,并将其考虑在内 执行安装时(例如,快捷方式的路径)

  • 根据可用的设置选项,您可以以不同的方式执行上述操作。我看到的最简单的替代方法是:创建一个.exe文件(install.exe),只有一个由用户执行;它将负责检索所有必需的信息,将其写入临时位置并调用主包(\installation files\setup.msi)。启动后,安装包将立即从相应的临时位置读取信息,删除它们,并在执行相应操作(设置快捷方式)时考虑这些信息


    我喜欢依赖这种配置(premial.exe调用主包或script/.exe作为第一个操作被安装包调用)的主要原因是它提供了很高的灵活性。它不仅解决了安装软件的最终问题/不兼容性,还建立了一个框架,允许我执行更复杂的操作(例如,安全系统),通过依赖相应的编程语言(在本例中为C#),实现起来更容易。

    这有助于,我制作了一个快速批处理文件,解决了这个问题。但是你会建议一个可执行文件吗?这完全取决于你。依我看,可执行文件比批处理文件有很多优点,但如果您更喜欢依赖批处理文件,就这样做吧。