我需要能够更改TARGETDIR,以便在安装主程序的驱动器上创建我的'logs'文件夹(在本例中为Drive D)。通过搜索注册表,我可以获得主程序的位置:
<Directory Id="TARGETDIR" Name="SourceDir" >
<Directory Id="LOGS" Name="logs" />
</Directory>
<Property Id="KBX_INSTALLED">
<RegistrySearch Id="KBXRegistrySearch" Root="HKLM" Key="SOFTWARE\KBX" Name="InstallPath" Win64="no" Type="directory" />
</Property>
我尝试使用CA和vbscript更改TARGETDIR属性值,但仍然在C驱动器上创建logs文件夹
<CustomAction Id="CHANGE_TARGET" Script="vbscript">
<![CDATA[
MsgBox(session.Property("TARGETDIR")) 'Returns C:\
MsgBox(session.Property("KBX_INSTALLED")) 'Returns D:\Program Files\KBX\
If session.property("KBX_INSTALLED") = "D:\Program Files\KBX\" Then
session.property("TARGETDIR") = "D:\"
End if
MsgBox(session.Property("TARGETDIR")) 'Returns D:\
]]>
</CustomAction>
<InstallExecuteSequence>
<Custom Action="CHANGE_TARGET" After="InstallValidate">NOT Installed</Custom>
</InstallExecuteSequence>
任何建议都表示赞赏。