C#查找应用程序的安装目录

时间:2012-08-23 07:59:59

标签: c# windows registry installation

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

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

如何找到安装目录?

2 个答案:

答案 0 :(得分:1)

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

话虽如此,我觉得可能有更好的方法来实现你的目标,而且我想我们可以帮助你实现目标。

修改

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

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

答案 1 :(得分:0)

您可以使用systemapplication类。

Application.ExecutablePath

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

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