Как мне сказать wix установить файл в каталог, заданный в свойстве? - PullRequest
1 голос
/ 26 февраля 2020

Я хочу сделать следующее, где XLSTART определен как:

   <CustomAction Id="AssignXLSTART" Return="check" Execute="firstSequence" Directory ='XLSTART' Value='[AppDataFolder]\Microsoft\Excel\XLSTART'>
    </CustomAction>

И затем у меня есть последующее действие CustomAction, которое вызывает некоторый код C#, который может изменить это значение.

И тогда в списке файлов для установки у меня есть:

  <Directory Id="XlStartFolderId" Name="[XLSTART]">
    <Component Id="ExcelMacro_xla" Guid="26D21093-B617-4fb8-A5E7-016493D46055" DiskId="1">
      <File Id="ExcelXLA" Name="AutoTagExcelMacro.xlam" ShortName="XLMacro.xla" Source="$(var.srcFolder)\AutoTagExcelMacro.xlam"/>
    </Component>
  </Directory>

Но вышеупомянутое помещает его в INSTALLDIR [XLSTART]. Как я могу получить это, чтобы прочитать это как свойство?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Разобрался. Вам необходимо установить в INSTALLDIR и затем использовать CopyFile

  <!-- place it in C:\Program Files (x86)\Microsoft Office\Root\Office16\XLSTART\ -->
  <Component Id="ExcelMacro_xla" Guid="26D21093-B617-4fb8-A5E7-016493D46055" DiskId="1">
    <File Id="ExcelXLA" Name="AutoTagExcelMacro.xlam" ShortName="XLMacro.xla" Source="$(var.srcFolder)\AutoTagExcelMacro.xlam">
        <CopyFile Id='CopyXlMacro' DestinationProperty='XLPATH' DestinationName='AutoTagExcelMacro.xlam'/>
    </File>
  </Component>
0 голосов
/ 26 февраля 2020

Вы должны иметь возможность установить в каталог userprofile, на который вы ссылаетесь, следующее:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="LocalAppDataFolder">

    <Directory Id="Microsoft" Name="Microsoft">
      <Directory Id="Excel" Name="Excel">
        <Directory Id="XLSTART" Name="XLSTART">

          <Component Id="ExcelAddIn" Feature="MyFeature" Guid="{11111-1111-GUID-HERE-YOURGUIDHERE}">
            <File Source="C:\SourceFiles\MyAddin.xla" />
            <RemoveFolder Id="Microsoft" On="uninstall" Directory="Microsoft" />
            <RemoveFolder Id="Excel" On="uninstall" Directory="Excel" />
            <RemoveFolder Id="XLSTART" On="uninstall" Directory="XLSTART" />
            <RegistryValue Root="HKCU" Key="Software\MySoftware" Name="installed" Type="integer" Value="1" KeyPath="yes" />
          </Component>

      </Directory>
    </Directory>
  </Directory>
</Directory>

Я бы предложил вам вместо этого использовать папку xlstart для каждой машины - если она все еще остается существует. Я не уверен, что это так. Надстройка загружается для каждого пользователя в окне при каждом запуске. Вообще я предпочитаю это. Прошло много лет с тех пор, как я посмотрел на это, поэтому это могло измениться в более новых версиях Office - на самом деле я уверен, что это так, но детали мне не ясны.

Системная папка Свойства : существует ряд System Folder Properties, которые можно использовать в файлах MSI для указания места установки - LocalAppDataFolder является лишь одним из них: https://docs.microsoft.com/en-us/windows/win32/msi/property-reference#system -folder-свойства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...