2013-07-16 29 views
8

在我的wxi文件中,我想设置一个具有Program Files目录的变量。我希望它选择Program Files的本地化值。作为如何在wxi文件中的变量中使用ProgramFilesFolder值

<?define MyDirectory="!(wix.LocalizedProgramFilesFolder)\MyFiles"?> 

我已经定义LocalizedProgramFilesFolder:

<WixVariable Id="LocalizedProgramFilesFolder" Value="[ProgramFilesFolder]"/> 

安装然而在MyDirectoryis选为:

"[ProgramFilesFolder]\MyFiles". 

它不展开ProgramFilesFolder。 如何在我的wxi文件中的变量中使用ProgramFilesFolder值?

回答

7

不确定为什么要使用MyDirectory变量。由于WixVariable docs说:

WiX的变量不会持续到MSI/MSM/PCP文件,所以正在安装MSI文件时不能 使用;这是一个只有WiX的概念。

它的值被写成文本到任何你使用它的地方。因此,如果您希望该值在安装时替换属性,则只能在此类上下文中使用它。

ProgramFilesFolder的典型用法是作为一个Directory/@ Id,它可以有一个子目录,如MyFiles。注意:Directory/@ Id也是一个属性,所以可以这样使用它。

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLFOLDER" Name="MyFiles" /> 
     </Directory> 
    </Directory> 

INSTALLFOLDER代替MyDirectory。你可以使用任何你想要的,但是该项目模板的默认值。这是全部上限,这使得它成为公共财产。公共属性值可以从UI或使用msiexec或其他程序(如引导程序)传递到安装程序序列中。

相关问题