WiX — разрешения для временной папки ASP.NET

Я пытаюсь установить разрешения для временной папки файлов ASP.NET следующим образом:

<PropertyRef Id="NETFRAMEWORK20INSTALLROOTDIR"/>
<DirectoryRef Id="NETFRAMEWORK20INSTALLROOTDIR">
  <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files">
    <Component Id="PermissionsTempAspnet" Guid="{C107EC7F-FC97-41b6-B418-EA4532949362}">
      <CreateFolder>
        <util:PermissionEx GenericAll="yes" User="[WIX_ACCOUNT_NETWORKSERVICE]" />
      </CreateFolder>
    </Component>
  </Directory>
</DirectoryRef>

Я включил расширения netfx и util. Когда я компилирую, я получаю следующую ошибку:

ошибка LGHT0094: неразрешенная ссылка на символ «Каталог: NETFRAMEWORK20INSTALLROOTDIR»

Что мне здесь не хватает?

Обновление: мало что знаю о WiX, я пробовал это. Он компилируется и связывается. Не уверен, что это действительно работает.

<DirectoryRef Id="TARGETDIR">
  <Directory Id="NetFramework20InstallDir" Name="[NETFRAMEWORK20INSTALLROOTDIR]">
    <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files">
      <Component Id="PermissionsTempAspnet" Guid="{C107EC7F-FC97-41b6-B418-EA4532949362}">
        <CreateFolder>
          <util:PermissionEx GenericAll="yes" User="[WIX_ACCOUNT_NETWORKSERVICE]" />
        </CreateFolder>
      </Component>
    </Directory>
  </Directory>
</DirectoryRef>

person Mike Ward    schedule 01.09.2009    source источник


Ответы (1)


Ваше второе решение создаст каталог с именем «[NETWORKFRAMEWORK20INSTALLROOTDIR]» на самом большом диске на вашем компьютере. Я не думаю, что это то, чего вы хотите. :)

Решение состоит в том, чтобы использовать «NETFRAMEWORK20INSTALLROOTDIR» в качестве Directory/@Id. Это имеет смысл только после того, как вы поймете, что каталоги можно рассматривать как свойства. Не обязательно интуитивно, но, тем не менее, это то, что делает установщик Windows. Итак, я бы просто изменил ваш первый пример на что-то вроде:

<PropertyRef Id="NETFRAMEWORK20INSTALLROOTDIR"/>
<DirectoryRef Id="TARGETDIR">
  <Directory Id="NETFRAMEWORK20INSTALLROOTDIR" Name="This will be ignored because the DirectorySearch used by the PropertyRef above will overwrite it.">
    <Directory Id="TempASPNETFolder" Name="Temporary ASP.NET Files">

Надеюсь, это укажет вам правильное направление. Обратите внимание, я бы использовал более короткий Directory/@Name, чем в моем примере выше. ;)

person Rob Mensching    schedule 04.09.2009
comment
Спасибо за то, что указали путь и объяснили, что каталоги можно рассматривать как концепцию свойств. - person Mike Ward; 09.09.2009