我构建了一个运行安装文件的应用程序,并在安装完成后自动修补它。
我使用此注册表项 HLKM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall ,但某些应用程序没有此密钥。
如何找到安装目录?
答案 0 :(得分:1)
如果您使用VS Setup Project作为安装程序,则可以使用Custom Actions作为获取有关安装环境的信息的一种方法。
话虽如此,我觉得可能有更好的方法来实现你的目标,而且我想我们可以帮助你实现目标。
修改强>
我想我现在跟着你。如果我这样做,我将首先硬编码我正在打包的每个第三方应用程序的默认设置位置。如果用户更改了默认值,则无法找到它,因此提示他们输入新路径。请记住,您可以使用Environment.SpecialFolder来获取Program Files(或其他系统文件夹)的实际位置,而不是假设C:\。对于大约99.9%的安装和用户,此方法将在没有任何额外用户交互的情况下完成。
另一种选择是为那些相反的第三方二进制文件创建自己的安装程序。当然你也必须保持更新,但听起来你已经用你的补丁做了类似的事情。
答案 1 :(得分:0)
您可以使用system
和application
类。
Application.ExecutablePath
例如,您可以获取包含可执行文件的目录的全名,如下所示:
string executableName = Application.ExecutablePath;
FileInfo executableFileInfo = new FileInfo(executableName);
string executableDirectoryName = executableFileInfo.DirectoryName;