【问题标题】:C# find installation directory of applicationC#查找应用程序的安装目录
【发布时间】:2012-08-23 07:59:59
【问题描述】:

我构建了一个运行安装文件并在安装完成后自动修补它的应用程序。

我使用此注册表项HLKM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall,但某些应用程序没有此注册表项。

如何找到安装目录?

【问题讨论】:

  • 您正在尝试修补第 3 方应用程序?没有要求对安装位置进行任何记录。也就是说,如果它不添加卸载密钥,它是一个非常糟糕的应用程序。
  • 是的,我正在尝试修补第三方应用程序,其中一半以上没有注册表项来保存安装目录!!!

标签: c# windows registry installation


【解决方案1】:

您可以使用 systemapplication 类。

Application.ExecutablePath

例如,您可以获得包含可执行文件的目录的全名,如下所示:

string executableName = Application.ExecutablePath;
FileInfo executableFileInfo = new FileInfo(executableName);
string executableDirectoryName = executableFileInfo.DirectoryName;

【讨论】:

    【解决方案2】:

    如果您使用 VS 安装项目作为安装程序,那么您可以使用 Custom Actions 作为获取有关安装环境信息的一种方法。

    话虽如此,我觉得可能有更好的方法来实现您的目标,并且通过更多信息,我认为我们可以帮助您实现目标。

    编辑

    我想我现在跟着你了。如果我这样做,我将首先对我正在打包的每个第 3 方应用程序的默认设置位置进行硬编码。如果用户更改了默认值,将找不到它,因此提示他们输入新路径。请记住,您可以使用Environment.SpecialFolder 来获取程序文件(或其他系统文件夹)的实际位置,而不是假设 C:\。对于大约 99.9% 的安装和用户而言,此方法无需任何额外的用户交互即可完成。

    另一种选择是为那些相反的第 3 方二进制文件创建自己的安装程序。当然你也必须维护更新,但听起来你已经在用你的补丁做类似的事情了。

    【讨论】:

    • 有多个设置文件由各种设置构建器构建
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2022-01-16
    • 2011-07-15
    相关资源
    最近更新 更多