Привет Всем,
Есть проблема, не могу понять в чем может быть дело.
Есть задача:
инсталлятор на Wix, нужно установить мой файл плагина в папку плагинов для Adobe Acrobat, например для версии 6.0 это будет папка:
'C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\'
для этих целей была написана Custom Action, которая устанавливает нужное значение Property, см. логи инсталляции:
PROPERTY CHANGE: Adding ACROBATPLUGINSDIR property. Its value is 'C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\'.
Эта Propery используется как Directory для моего компонента ArPluginComponent, см. логи инсталяции:
...
Executing op: SetTargetFolder(Folder=C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\)
Executing op: FileCopy SourceName=ArPlgFnd.api|ArPlgFind.api,SourceCabKey=ArPlgFind.api,DestName=ArPlgFind.api,Attributes=16384,FileSize=77824,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=1.1.1.10,Language=1033,InstallMode=58982400,,,,,,,)
File: C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\ArPlgFind.api; To be installed; Won't patch; No existing file
Source for file 'ArPlgFind.api' is compressed
Note: 1: 2318 2: C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins\ArPlgFind.api
Note: 1: 2360
...
Все работает замечательно, до тех пор, пока не установили новую версию Adobe Acrobat 8.0, для которой
папка плагинов будет другой:
'C:\Program Files\Adobe\Acrobat 8.0\Reader\plug_ins\'
Если запусить мою инсталляцию в режиме восстановления (REINSTALL=ALL, REINSTALLMODE=vamus),
то по логам наблюдаем следующее:
1) отрабатывает Custom Action, которая успешно устанавливает новое значение Property, см. логи инсталляции:
PROPERTY CHANGE: Adding ACROBATPLUGINSDIR property. Its value is 'C:\Program Files\Adobe\Acrobat 8.0\Reader\plug_ins\'.
2) начинает работатать последовательность CostInitialize, FileCost, CostFinalize которая сбрасывет мое новое значение на старое:
...
Doing action: CostFinalize
Note: 1: 2205 2: 3: ActionText
FileCost. Return value 1.
...
Note: 1: 2205 2: 3: MsiAssembly
Note: 1: 2228 2: 3: MsiAssembly 4: SELECT `MsiAssembly`.`Attributes`, `MsiAssembly`.`File_Application`, `MsiAssembly`.`File_Manifest`, `Component`.`KeyPath` FROM `MsiAssembly`, `Component` WHERE `MsiAssembly`.`Component_` = `Component`.`Component` AND `MsiAssembly`.`Component_` = ?
PROPERTY CHANGE: Modifying ACROBATPLUGINSDIR property. Its current value is 'C:\Program Files\Adobe\Acrobat 8.0\Reader\plug_ins\'. Its new value: 'C:\Program Files\Adobe\Acrobat 6.0\Reader\plug_ins'.
Соответственно, файл плагина не переписывается в новую папку !
Если удалить и установить программу заново, то все снова работает нормально, плагин устанавливается в новую папку без проблем.
Вопрос:
это нормальное поведение системы, если да, то как можно попробовать решить эту проблему ?
если нет, то в чем может быть ошибка ?
Здравствуйте, Peters07, Вы писали:
[skip] P>Если удалить и установить программу заново, то все снова работает нормально, плагин устанавливается в новую папку без проблем. P>Вопрос: P>это нормальное поведение системы, если да, то как можно попробовать решить эту проблему ?
Да, это правильное поведение системы.
Repair, по замыслу — починка установленного пакета по состоянию на тот момент, когда он изначально был установлен. Там есть тонкости, что не все будет перезаписано как было установлено раньше, но это уже другая ситуация.
Установить пакет в две разные папки одной и той же инсталяшкой в большинстве случаев неправильно. Например, возникают вопросы, при удалении удалять оба или один только? При апдейте что именно обновлять. Ну и прочие фенечки типа поиска установленных компонентов, файлов и пр. Например, представьте, что Acrobat по этой же схеме установлен в 2 папки. Куда вы свой плагин ставить будете? А если версий Acrobat'а более двух? Ну и т.п.
Решить проблему — удалить плагин и поставить его заново. Для эстетического удовлетворения можно сделать проверку установленности более нового Acrobat'а и выводить сообщение об этом. Но я бы этим заниматься не стал. Стандартное поведение именно такое, как вы наблюдаете. И оно правильное в подавляющем большинстве случаев.
К этому моменту у меня внутри 0.5, 0.7, 0.33 (с) НС