Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 部署C控制台应用程序-如何通过“立即发布”设置更新环境路径?_C#_Deployment_Visual Studio 2013_Console Application - Fatal编程技术网

C# 部署C控制台应用程序-如何通过“立即发布”设置更新环境路径?

C# 部署C控制台应用程序-如何通过“立即发布”设置更新环境路径?,c#,deployment,visual-studio-2013,console-application,C#,Deployment,Visual Studio 2013,Console Application,事情是这样的。我在.NETC中构建了一个控制台应用程序。它运行良好,一切正常。它是我们网络中的一个内部工具,但可以在世界上任何大公司中使用。我想我可以使用MS VisualStudio 2013附带的简单安装/部署向导生成一个漂亮的小安装程序。我把它安装好了,效果很好 然而,一旦应用程序安装在目标机器上,我希望它可以在命令行的任何位置使用。我需要更新路径变量,或者将应用程序安装在路径位置。后一种做法似乎很危险,比如在系统中放置一些东西,所以我想知道: 安装应用程序时,如何让简单的Microsof

事情是这样的。我在.NETC中构建了一个控制台应用程序。它运行良好,一切正常。它是我们网络中的一个内部工具,但可以在世界上任何大公司中使用。我想我可以使用MS VisualStudio 2013附带的简单安装/部署向导生成一个漂亮的小安装程序。我把它安装好了,效果很好

然而,一旦应用程序安装在目标机器上,我希望它可以在命令行的任何位置使用。我需要更新路径变量,或者将应用程序安装在路径位置。后一种做法似乎很危险,比如在系统中放置一些东西,所以我想知道:

安装应用程序时,如何让简单的Microsoft部署向导更新目标计算机上的相应路径?我不想写一些安装程序。我希望会有一些基本的部署选项,让我做一些自定义的事情,像这样没有麻烦


我错过了什么?帮助谢谢…

接下来,为了回答我的问题,我必须创建一个自定义安装步骤,更新PATH环境变量,使计算机从任何CMD窗口都能看到我的新控制台应用程序。这意味着要执行两个步骤: 读取当前路径而不展开每个字符串中的变量,如下所示:

        string RegKeyName = @"SYSTEM\CurrentControlSet\Control\Session Manager\Environment";
        string pathvariable = (string)Microsoft.Win32.Registry.LocalMachine.OpenSubKey(RegKeyName).GetValue
            ("Path", "", Microsoft.Win32.RegistryValueOptions.DoNotExpandEnvironmentNames);
然后,我用分号拆分pathvariable并将其加载到allpaths数组变量中,忽略空条目。然后,我在foreach循环中迭代了所有路径,重建了主路径,并设置了一个布尔值,告诉我要添加的目录是否已经在路径中。然后,一旦我做到了这一点,我就做了以下几点:

        if (NeedtoUpdate)
        {
            Environment.SetEnvironmentVariable("Path", MasterPath + MyNewPathEntry + ";", EnvironmentVariableTarget.Machine);
        }

这就是自定义安装步骤对我的作用。

这是不可能的,您必须编写一些安装程序。这并不难,它允许您向HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths注册表项添加一个项,以便可以从任何位置启动。谢谢。我下载并安装了扩展。我在解决方案中添加了一个安装项目。但是现在我有点迷路了。有关于如何使用安装项目的教程吗?即使尝试在注册表项的子值上添加带有默认值的注册表项,似乎也是可以撤消的,因此我需要后退一步,看看一些关于如何使用安装项目的文档。有什么好的在线文档的建议吗?