2010-04-12 3 views
6

Я пишу установщик WIX, и у меня есть следующее требование:
Во время установки мне необходимо передать абсолютный путь к файлу (позвоните по телефону A), включенному в мой установщик, COM-компонент, который уже существует на жестком диске и является частью другой программы. Я уже написал соответствующее пользовательское действие, которое ожидает путь к файлу A. Я не хочу включать A как файл, установленный в папке Program Files и удаленный в процессе удаления. Вместо этого я хотел бы поместить A только временно на жесткий диск, вызвать свое пользовательское действие, которое заставит COM-компонент использовать содержимое A, а затем удалить A с диска. Есть ли простой способ достичь этой цели?WIX: Использование временного файла во время установки

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

Любая помощь будет оценена по достоинству.

ответ

6

Я бы взял такой подход.

Установите файл «A» в любой каталог. Запустите пользовательские действия, необходимые для обновления COM-компонента. Затем запустите другое настраиваемое действие или измените написанную в данный момент, чтобы удалить файл после того, как он больше не используется. Это не оставляет следов файла «A», и если вы планируете, чтобы пользовательские действия выполнялись только во время установки, вам не придется беспокоиться об этом при удалении.

+1

Хорошая идея. Скажем, я установлю файл и удалю его с помощью своего пользовательского действия в конце процесса установки. Не было бы проблем с отсутствующим файлом во время удаления? Я полагаю, что деинсталлятор не рассматривает недостающие файлы как ошибки? – madbadger

+2

Нет, при удалении не будет ошибки. Если деинсталлятор не видит файл, он просто ударяет по нему. –

8

Удаление файла, который MSI установил, означает, что MSI будет считать его «сломанным» и попытаться авторемонтировать его, если он вызван. Это происходит автоматически в нескольких случаях (например, объявленные ярлыки и регистрация COM), поэтому я бы рекомендовал против него. Оставьте там файл вместо этого - он выполнил свою работу, и нет никакого вреда в том, чтобы оставить его там.

+1

Что делать, если установленные файлы находятся в виртуальной папке IIS, и вы не хотите, чтобы люди загружали этот файл? – guiomie

+0

Файл может быть установлен с пустым компонентом GUID, так что он никогда не сможет вызвать самостоятельный ремонт, если он будет удален. С другой стороны, я согласен с тем, что его нужно просто оставить на диске, где он был установлен. Пустой компонент GUID также означает, что файл не будет удалён должным образом, если вы не создадите запись RemoveFile. –

+1

Обсуждалось ли понятие «установочных файлов» для Wix? Это концепция Installshield, в которой файлы ресурсов, такие как логотипы, лицензионные соглашения, звуковые файлы и многое другое, извлекаются в папку% TMP% и могут быть указаны во время установки с помощью кода пользовательского действия с использованием макросов пути. Бывают случаи, когда это поможет - возможно, концепция уже находится в Wix. –

Смежные вопросы