Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Powershell 使用字符串操作设置MSI安装程序的安装目录_Powershell_Windows Installer_Visual Studio Setup Proje_Orca - Fatal编程技术网

Powershell 使用字符串操作设置MSI安装程序的安装目录

Powershell 使用字符串操作设置MSI安装程序的安装目录,powershell,windows-installer,visual-studio-setup-proje,orca,Powershell,Windows Installer,Visual Studio Setup Proje,Orca,我正在为一个程序创建一个MSI安装程序,希望允许人们升级安装,而不是总是卸载/重新安装 我已经记下了大部分内容,但现在我想自动将TARGETDIR(或install目录)设置为用户以前安装应用程序的位置 在Visual Studio中,在“启动条件->搜索目标计算机”下,我找到一个名为ISUPGRADE的注册表项,它包含以前安装的位置(如果已安装),但附加了一个/bin/XXXX.dll。我想删除这个字符串的结尾,并将其设置为TARGETDIR,以便升级将在那里安装 我可以在中设置一个静态字符串

我正在为一个程序创建一个MSI安装程序,希望允许人们升级安装,而不是总是卸载/重新安装

我已经记下了大部分内容,但现在我想自动将TARGETDIR(或install目录)设置为用户以前安装应用程序的位置

在Visual Studio中,在“启动条件->搜索目标计算机”下,我找到一个名为ISUPGRADE的注册表项,它包含以前安装的位置(如果已安装),但附加了一个/bin/XXXX.dll。我想删除这个字符串的结尾,并将其设置为TARGETDIR,以便升级将在那里安装

我可以在中设置一个静态字符串作为TARGETDIR(在CustomActions中,并在InstallExecuteSequence和InstallUISequence中引用该操作),但我无法确定如何使用变量设置它

我该怎么做?我正在使用Visual Studio生成.msi文件,并使用Powershell脚本(用于手动/测试编辑的Orca)对文件进行更改

分割路径

Split-Path cmdlet仅返回路径的指定部分,例如父文件夹、子文件夹或文件名


获取帮助分割路径

谢谢,这看起来确实有用,但我认为我无法在powershell脚本中实现这一点。我需要在安装程序中运行它,这样它就可以获得用户计算机上以前安装的目录。powershell脚本只是在发布之前在我的机器上本地编辑.msi。基本上是类似的副本,但略有不同。听起来他们想要得到注册表值,我已经有了这个值,只需要稍微修改一下字符串。最后,我使用自定义操作类型38(内联VBscript)编辑字符串值,然后再使用它设置TARGETDIR