2017-02-02 3 views
0

хорошо известный трюк, чтобы получить переменную, основанную на файловом файл версииполучить «FileVersion» из файла, который не будет установлен

<?define ProductVersion = !(bind.FileVersion.filProductVersion) ?> 

где

<Fragment> 
     <ComponentGroup Id="MyCG"> 
      <Component Id="cmpabc" Directory="INSTALLDIR" Guid="YOUR-GUID-HERE"> 
       <File Id="filProductVersion" KeyPath="yes" Source="$(var.MyRootFolder)\fileIAmGoingToInstall.dll" /> 
      </Component> 

Есть в любом случае, чтобы установить переменная, основанная на файловой версии файла, который я НЕ хочу установить?

Я попытался это:

MyWxs.wxs

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 

    <Fragment> 
    <Binary Id="binaryProductVersionId" SourceFile="$(var.MyRootFolder)\FileIDoNotWantToInstall.dll" /> 
    </Fragment> 


</Wix> 

MyWxi.wxi

<?xml version="1.0" encoding="utf-8"?> 
<Include> 
     <?define ProductVersion = !(bind.FileVersion.binaryProductVersionId) ?> 
</Include> 

Но я получаю:

Severity Code Description Project File Line Suppression State 
Error  Unresolved bind-time variable !(bind.FileVersion.binaryProductVersionId). 

ответ

1

Вы можете попробовать месте условие внутри компонента, которое всегда будет fals е.

 <Component Id="cmpabc" Directory="INSTALLDIR" Guid="YOUR-GUID-HERE"> 
      <File Id="filProductVersion" KeyPath="yes" Source="$(var.MyRootFolder)\fileIAmGoingToInstall.dll" /> 
      <Condition>IGNORE = "0"</Condition> 
     </Component> 

где ИГНОРИРУЙТЕ может быть свойство или использовать переменные $ (var.IGNORE)

+0

BRILLIANT! Я использовал « 0 = 1», чтобы сделать его коротким и простым. – granadaCoder