2015-03-27 8 views
0

Я хочу, чтобы .msi не удалял некоторые файлы при обновлении. Я видел, что я могу добавить файлы, которые нужно удалить, но я не нахожу никакой информации о том, как сказать в .msi «Не удалять это (при обновлении)».Force .msi, чтобы пропустить удаление некоторых файлов

Может ли кто-нибудь помочь мне в этом?

+0

Просто чтобы быть ясно ... Не удаляйте и не перезаписать? Что должно произойти с файлом при удалении? –

+0

Файл/папка не должна удаляться. При удалении он должен быть удален или появится вопрос о том, хочет ли он, чтобы эти файлы были удалены или оставлены. – malkoto1

+0

Вы делаете крупные обновления или небольшие обновления? –

ответ

1

Мне это удалось.

Я создал два пользовательских действия: один для резервного копирования и один для извлечения резервной копии.

<CustomAction Id="BackupCurrentUserConfig" 
     BinaryKey="Utility" 
     DllEntry="BackupUserConfig" 
     Execute="firstSequence" /> 
    <CustomAction Id="RetrieveUserConfigFromBackup" 
     BinaryKey="Utility" 
     DllEntry="RetrieveUserConfig" /> 

И я запланирована их следующим образом:

<InstallUISequence> 
     ... 
     <Custom Action="BackupCurrentUserConfig" Before="ExecuteAction"></Custom> 
    </InstallUISequence> 

    <InstallExecuteSequence> 
     ... 
     <Custom Action="VM_RetrieveUserConfigFromBackup" After="InstallFiles"></Custom>   
    </InstallExecuteSequence> 
2

Это серьезное обновление, не так ли? Это совершенно новый файл MSI, содержащий все необходимые вам файлы. Поэтому просто убедитесь, что они также находятся в новом файле MSI. Это то, что делают все. Если ваш старший MSI содержит файлы A, B, C и D, и вы хотите, чтобы обновление «сохраняло» A, B, C, чтобы они не были удалены, поместите их в обновление. Чтобы быть в безопасности, удостоверьтесь, что у них одинаковые идентификаторы компонентов. Я подозреваю, что у вас есть предположение о том, как эти вещи работают, о которых мы не знаем.

+0

Нечестно ... Я задал все разъясняющие вопросы. :) –

+0

lol chris, я просто прыгнул прямо с тем, что я думал, было ответом, потому что я видел это много раз раньше :) – PhilDW

+0

О, я должен, но иногда трудно сказать, чего они действительно хотят. Я подозревал, что «не удалить» означает «не перезаписывать». –