Installshield / MSI Установить временный файл во время процесса удаления - PullRequest
2 голосов
/ 16 сентября 2011

У меня есть проект установки, который выполняет пользовательское действие.Само настраиваемое действие использует некоторые временные файлы, которые копируются установщиком до вызова настраиваемого действия.Файлы удаляются после завершения настраиваемого действия.

Все прекрасно работает на этапе установки.

Моя проблема на этапе удаления.Вызывается другое настраиваемое действие, и оно также должно получить доступ к этим временным файлам.У меня вопрос как скопировать (временно) файлы на машину на этапе удаления?

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011

Хотя то, на что Космин ответил, верно, он, похоже, не знает, что в InstallShield имеется функция под названием «Файлы поддержки», которая уже выполняет все, что он описывает. Перетащите некоторые файлы в Installation Designer | Поведение и Логика | Файлы поддержки | Независимый от языка и InstallShield автоматически направит их в таблицу ISSetupFile и упорядочит пользовательские действия, которые извлекают файлы во временный каталог во время установки, а в конце очищают файлы.

Расположение этих файлов можно узнать с помощью свойства [SUPPORTDIR]. Если вы используете отложенное настраиваемое действие, вам придется сериализовать его через свойство CustomActionData.

Также, если вы используете настраиваемые действия DTF, вы должны знать, что если вы добавляете контент в ваш CA CSPROJ с действием Content and Copy Always, то он будет упакован и извлечен в текущий каталог, к которому будет доступен ваш код выполняется.

1 голос
/ 16 сентября 2011

Установщик Windows не поддерживает временные файлы. Поэтому я предполагаю, что вы просто устанавливаете некоторые файлы и удаляете их по окончании установки. Это не очень хороший подход, потому что для установщика Windows в основном отсутствуют ресурсы.

Правильный подход к временным файлам - хранить их в таблице Binary и использовать пользовательские действия, которые извлекают их при запуске установки и удаляют их по окончании. Это поддерживается напрямую несколькими инструментами разработки.

В вашем случае вы можете попробовать этот подход:

  • не удаляйте файлы во время установки (оставляйте их на диске)
  • запланируйте свое действие по удалению до RemoveFiles действие в InstallExecuteSequence

Таким образом, пользовательское действие по удалению будет иметь доступ к вашим файлам.

...