Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
在WiX 3.7中结合绝对路径和相对路径_Wix_Wix3_Wix3.7 - Fatal编程技术网

在WiX 3.7中结合绝对路径和相对路径

在WiX 3.7中结合绝对路径和相对路径,wix,wix3,wix3.7,Wix,Wix3,Wix3.7,我正在尝试使用RemoveFolderEx在卸载应用程序时从我的安装文件夹中删除一级文件夹。以下是我所拥有的,但它不起作用: <Fragment> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="MyAppBaseFolder" Name="MyAppID">

我正在尝试使用
RemoveFolderEx
在卸载应用程序时从我的安装文件夹中删除一级文件夹。以下是我所拥有的,但它不起作用:

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="MyAppBaseFolder" Name="MyAppID">
          <Directory Id="INSTALLFOLDER" Name="MyAppLauncher">
            <Directory Id="UPDATESCRIPTSFOLDER" Name="Scripts" />
            <Component Id="CleanupMainApplicationFolder" Guid="*">
              <RegistryValue Root="HKLM" Key="SOFTWARE\MyApp ID\MyApp ID Windows Client" Name="Path" Type="string" Value="${path::getfullpath(path::combine([INSTALLFOLDER],'..\MyApp'))}" KeyPath="yes" />
              <util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />
            </Component>
          </Directory>
        </Directory>
      </Directory>
      <Directory Id="ProgramMenuFolder">
        <Directory Id="ApplicationProgramsFolder" Name="MyApp ID"/>
      </Directory>
    </Directory>
  </Fragment>


您在
注册表值/@Value
中的语法看起来像NAnt之类的。目前尚不清楚是什么解释了这一点,但Windows安装程序不会。您有几个选项可以正确获取注册表值。首先,将
RegistryValue
元素更改为如下所示:

<RegistryValue Root="HKLM"
               Key="SOFTWARE\MyApp ID\MyApp ID Windows Client"
               Name="Path"
               Type="string"
               Value="[MyAppBaseFolder]MyApp"
               KeyPath="yes" />
<RegistryValue Root="HKLM"
               Key="SOFTWARE\MyApp ID\MyApp ID Windows Client"
               Name="Path"
               Type="string"
               Value="[MyAppFolder]"
               KeyPath="yes" />
然后更新您的
RegistryValue
元素,使其看起来像:

<RegistryValue Root="HKLM"
               Key="SOFTWARE\MyApp ID\MyApp ID Windows Client"
               Name="Path"
               Type="string"
               Value="[MyAppBaseFolder]MyApp"
               KeyPath="yes" />
<RegistryValue Root="HKLM"
               Key="SOFTWARE\MyApp ID\MyApp ID Windows Client"
               Name="Path"
               Type="string"
               Value="[MyAppFolder]"
               KeyPath="yes" />

我更喜欢后者,但那只是因为我更喜欢使用标识符而不连接字符串。

非常感谢(再次)Rob!你写答案时,我正在更新我的帖子。的确是南特。我想在将随机代码插入XML之前,我应该仔细阅读这些文章:)。我现在要试试你的建议。
<RegistryValue Root="HKLM"
               Key="SOFTWARE\MyApp ID\MyApp ID Windows Client"
               Name="Path"
               Type="string"
               Value="[MyAppFolder]"
               KeyPath="yes" />