从WiX中的路径中删除尾部斜杠

bee*_*f2k 9 installer wix path

我正在使用WiX为我无法控制的软件安装插件.要安装插件,我必须将目标文件夹放在注册表项中:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="LocalAppDataFolder">
    <Directory Id="APPROOTFOLDER" Name="Foobar Plugin" />
  </Directory>
</Directory>

...

<DirectoryRef Id="APPROOTFOLDER">
  <Component Id="register" Guid="240C21CC-D53B-45A7-94BD-6833CF1568BE">
    <RegistryKey Root="HKCU" Key="Software\ACME\Plugins\FooBar">
      <RegistryValue Name="InstallDir" Value="[APPROOTFOLDER]" Type="string"/>
    </RegistryKey>
  </RegistryKey>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

安装后,注册表项HKCU\Software\ACME\Plugins\FooBar\InstallDir将包含安装目标路径,但尾部为" \".不幸的是,由于某些奇怪的原因,主机应用程序(提供插件架构)因此而崩溃.如果没有斜杠,一切正常!

在WiX中有没有办法摆脱尾随斜线?

我想到的一个解决方案就是.在路径的末尾添加一个" ",但是,这似乎在我的场景中不起作用:( ..

Ost*_*ati 5

您不应该在自定义操作中使用脚本,但是如果您可以将行数限制为仅几行,并且像本示例一样简单,则应该没问题。

<CustomAction Id="VBScriptCommand" Script="vbscript">
  <![CDATA[         
    value = Session.Property("INSTALLFOLDER")

    If Right(value, 1) = "\" Then
      value = Left(value, Len(value) - 1) 
    End If

    Session.Property("SOME_PROPERTY") = value      
  ]]>
</CustomAction>

<InstallExecuteSequence>
  <Custom Action="VBScriptCommand" After="CostFinalize">NOT REMOVE</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)


Sha*_*men 2

你总是可以做这样的事情:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="LocalAppDataFolder">
    <Directory Id="APPROOTFOLDER" Name="Foobar Plugin" />
  </Directory>
</Directory>

...

<DirectoryRef Id="APPROOTFOLDER">
  <Component Id="register" Guid="240C21CC-D53B-45A7-94BD-6833CF1568BE">
    <RegistryKey Root="HKCU" Key="Software\ACME\Plugins\FooBar">
      <RegistryValue Name="InstallDir" Value="[LocalAppDataFolder]\Foobar Plugin" Type="string"/>
    </RegistryKey>
  </RegistryKey>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

并且不允许用户更改最终文件夹