【发布时间】:2011-02-23 15:31:18
【问题描述】:
我正在寻找一种在安装完成后将应用程序安装文件夹包含到 %PATH% 环境变量中的简单方法。
Visual Studio 2005/2008/2010,安装项目。
谢谢
【问题讨论】:
-
我看到的唯一方法是创建自定义类库并进行一些编码,但可能还有其他方法——比如使用 setx 命令
标签: visual-studio setup-project
我正在寻找一种在安装完成后将应用程序安装文件夹包含到 %PATH% 环境变量中的简单方法。
Visual Studio 2005/2008/2010,安装项目。
谢谢
【问题讨论】:
标签: visual-studio setup-project
很遗憾,但您似乎仍然是正确的,需要为自定义操作编写一个类。示例实现已经消失。请参阅下面的替代方法。
【讨论】:
这是一个老问题,但在谷歌搜索结果中仍然排名很高。
已接受答案中的链接现已损坏。
但是,您可以在此处找到仍然有准确答案的重复问题(稍后提出): GetEnvironmentVariable() and SetEnvironmentVariable() for PATH Variable
我将此问题标记为重复,但在此问题关闭之前,以下代码对我有用:
string keyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
//get non-expanded PATH environment variable
string oldPath = (string)Registry.LocalMachine.CreateSubKey(keyName).GetValue("Path", "", RegistryValueOptions.DoNotExpandEnvironmentNames);
//set the path as an an expandable string
Registry.LocalMachine.CreateSubKey(keyName).SetValue("Path", oldPath + ";%MYDIR%", RegistryValueKind.ExpandString);
我将 %MYDIR% 替换为应用程序路径。
此外,您需要进行自定义操作来容纳此代码并将代码放置在提交函数中。
【讨论】:
主要问题是 Visual Studio 设置不支持可以使用 PATH 和其他环境变量完成所有这些操作的 Windows Installer 环境表。 MSI 的环境表并不复杂,因此值得使用 MSI 编辑器(例如 Orca)来学习如何使用它,然后使用脚本(例如 WiRunSql.vbs 在Windows SDK)来自动更新。
或者,学习足够多的 WiX 以创建一个包含您的设置所需的环境变量的合并模块,并将其添加到您的 Visual Studio 设置中。
这些选择中的任何一个都比编写运行时代码要好,因为运行时代码需要小心不要破坏环境变量,并且不能在每个人安装中使用用户变量。
【讨论】: