2012-08-23 90 views
0

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

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

我如何找到安装目录?

+1

您正在尝试修补第三方应用程序吗?没有要求任何记录由安装位置组成。也就是说,如果它不添加卸载密钥,这是一个非常糟糕的应用程序。 –

+0

是的,我尝试修补第三方应用程序,其中一半以上没有注册表项来保存安装目录! – sma6871

回答

1

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

就这样说,我觉得可能有更好的方法来实现你的目标,并且有更多的信息,我想我们可以帮你达到目标。

编辑

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

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

+0

有多个安装文件可由各种安装程序构建器构建 – sma6871

0

您可以使用systemapplication类。

Application.ExecutablePath 

例如,你可以得到包含你可执行文件的目录的完整名称如下:

string executableName = Application.ExecutablePath; 
FileInfo executableFileInfo = new FileInfo(executableName); 
string executableDirectoryName = executableFileInfo.DirectoryName; 
相关问题