Как скопировать папку (не файл) во время установки с WiX?
Я пишу код установки с использованием Wix, и мне нужно установить всю папку в определенное место, а затем скопировать эту папку в несколько разных мест, я мог бы установить те же файлы в эти места, используя один за другим код, но это папка имеет размер около 80 Мб, так что это увеличит мой размер MSI (80 x 3 = 240 Мб).
Одним из решений, о котором я думал, было сжатие папки в zip-файл, а затем использование элемента CopyFile для копирования файла, после этого распакуйте три папки, но это слишком сильно увеличивает время установки.
Есть ли способ сделать это, используя собственный код wix, или Custom Actions - мое единственное решение? Tnks
2 ответа
"Умная разводка" WiX повторно использует один экземпляр хранимых данных файла, даже если он включен несколько раз в разные каталоги. См. http://robmensching.com/blog/posts/2007/6/1/quotSmart-cabbingquot-added-to-WiX-toolset. Таким образом, у вас есть дубликат авторинга, но без взлома.msi.
Если вы хотите сделать это так, как это предусмотрено в MSI, вам нужно создать 3 элемента CopyFile для каждого файла, который вы хотите дублировать.
Элемент CopyFile отображается в таблицу DuplicateFile, которая обрабатывается действием DuplicateFiles. Он не имеет понятия */, скорее, он требует отображения 1 к 1 обратно в таблицу / столбец File.File_. (Файл @Id в WiX)
Вы, безусловно, можете решить, что ненавидите этот шаблон и выполнять свои собственные действия для выполнения задания, но если вы это сделаете, убедитесь, что вы выполняете установку, удаление, восстановление, откат, обновление и так далее. Ограничения MSI могут раздражать, но вы получаете много за "бесплатно" (хотя и не безболезненно), если вы используете его.