Создайте папки из текстового файла и поместите в них фиктивный файл, используя CustomAction - PullRequest
0 голосов
/ 25 мая 2010

Я хочу, чтобы мой установщик MSI генерировал набор папок в определенном месте и помещал фиктивный файл в каждый каталог.

В настоящее время у меня есть следующие CustomActions:

<CustomAction Id="SMC_SetPathToCmd" Property="Cmd" Value="[SystemFolder]cmd.exe"/>
<CustomAction Id="SMC_GenerateMovieFolders" Property="Cmd" ExeCommand="for /f &quot;tokens=* delims= &quot; %a in ([MBSAMPLECOLLECTIONS]movies.txt) do (echo %a)" />
<CustomAction Id="SMC_CopyDummyMedia" Property="Cmd" ExeCommand="for /f &quot;tokens=* delims= &quot; %a in ([MBSAMPLECOLLECTIONS]movies.txt) do (copy [MBSAMPLECOLLECTIONS]dummy.avi &quot;%a&quot;\&quot;%a&quot;.avi)" />

Они вызываются в InstallExecuteSequence:

  <Custom Action="SMC_SetPathToCmd" After="InstallFinalize"/>
  <Custom Action="SMC_GenerateMovieFolders" After="SMC_SetPathToCmd"/>
  <Custom Action="SMC_CopyDummyMedia" After="SMC_GenerateMovieFolders"/>

Кажется, что настраиваемые действия запускаются, но отображается только пустое окно командной строки, а каталоги не создаются.

Файлы, необходимые для установки, копируются в правильный каталог:

  <Directory Id="WIX_DIR_COMMON_VIDEO">
    <Directory Id="MBSAMPLECOLLECTIONS" Name="MB Sample Collections" />
  </Directory>

<DirectoryRef Id="MBSAMPLECOLLECTIONS">
  <Component Id="SampleCollections" Guid="C481566D-4CA8-4b10-B08D-EF29ACDC10B5" DiskId="1">
    <File Id="movies.txt" Name="movies.txt" Source="SampleCollections\movies.txt" Checksum="no" />
    <File Id="series.txt" Name="series.txt" Source="SampleCollections\series.txt" Checksum="no" />
    <File Id="dummy.avi" Name="dummy.avi" Source="SampleCollections\dummy.avi" Checksum="no" />
  </Component>
</DirectoryRef>

Что не так с этими пользовательскими действиями или есть более простой способ сделать это?

1 Ответ

0 голосов
/ 26 мая 2010

Очевидные проблемы заключаются в том, что при последовательности этих пользовательских действий они не будут должным образом поддерживать управляемые (повышенные / UAC) экземпляры или не будут иметь какой-либо концепции обслуживания MSI с точки зрения восстановления, отката, удаления, обновления.

Трудно дать точный совет, не зная точно, что вы делаете. Я недавно узнал, что у меня был клиент, у которого был SDK с некоторыми «образцами», которые он хотел установить для каждого пользователя. Я убедил этого клиента просто распространять ZIP-файлы и написать простое приложение winforms, которое могло бы справиться с заданием пользователю нескольких вопросов и извлечением этих файлов в каталог по выбору пользователя. Таким образом они могли развернуть несколько экземпляров сэмплов, поиграть с ними, удалить их, что угодно, не наступая на пальцы MSI.

...