我正在为Adobe Illustrator创建一个插件,我正在尝试使用WiX为它安装。因此,为了让插件安装在正确的位置,我正在阅读注册表以找到最新版本的illustrator,然后找到该Illustrator exe的文件路径。这一切都很好,并给了我"C:\Program Files\Adobe\Illustrator CC 2018\Support Files\Contents\Windows\Illustrator.exe"
(我已经检查过,如果你选择在其他地方安装它,这条路径反映了这一点)。插件安装在"C:\Program Files\Adobe\Illustrator CC 2018\Plug-ins"
中。
所以我现在要做的是使用exe的路径获取Plug-ins文件夹的相对路径。在WiX中有一种简单的方法吗?
我试过用
<CustomAction Id="SETDIRECTORY" Property="PLUGINFOLDER" Value="[ILLUSTRATOREXEPATH]..\..\..\Plug-ins" />
但是这会抛出一个错误,说明..是一个无效的字符
修改
我知道通过使用RegistrySearch类型“文件”设法找出如何获取文件的目录,给我"C:\Program Files\Adobe\Illustrator CC 2018\Support Files\Contents\Windows\"
但是无法解决如何获取父目录而不使用脚本(我不想诉诸的东西,因为它显然会导致反病毒问题)。
答案 0 :(得分:0)
您是否搜索了磁盘上的注册表或 INI文件或其他设置文件,以确定插件文件夹的完整路径是否为写在任何地方并准备好使用?
很有可能在某处编写完整路径,或者您将找到一个基本文件夹,您只需以您已经完成的方式添加子文件夹,但没有导致您出现问题的父目录部分。
除了简单地浏览或搜索注册表和磁盘以寻找线索之外,检查原始安装MSI还可以提供有关此路径写入位置的线索。查看IniFile table
,Registry table
,Environment table
和类似内容。
如果你没有工具来仔细阅读MSI文件,或许可以看到这个答案(朝向底部 - 免费工具列表):How can I compare the content of two (or more) MSI files?
如果您没有原始安装程序,我会提交技术说明。在安装过程中,将在您的系统上创建安装MSI的副本。您可以打开此文件以搜索设置。
此VBScript代码段应显示Adobe产品的所有缓存包。将它放在桌面上的* .vbs文件中,然后运行它。弹出一个带有任何结果的消息框(如果没有找到则为空白)。打开指定的MSI路径 - 不对此文件进行任何更改! (或者更好的是,将它复制到桌面并从那里打开)。
On Error Resume Next ' we ignore all errors
Set installer = CreateObject("WindowsInstaller.Installer")
Dim adobeproducts
For Each product In installer.ProductsEx("", "", 7)
name = product.InstallProperty("ProductName")
cachedpackage = product.InstallProperty("LocalPackage")
If InStr(LCase(name), "adobe") Then
adobeproducts = adobeproducts + name & ", " & cachedpackage & vbCrLf & vbCrLf
End If
Next
MsgBox adobeproducts