Мое понимание заключается в том, что установщики MSI используют количество ссылок на файлы, чтобы отслеживать, сколько «инсталляторов» установил общий файл (скажем, dll). [HKEY_LOCAL_MACHINE] \ SOFTWARE \ Microsoft \ Windows \ Current Version \ SharedDLLsВручную счетчик ссылок на прирост или декремент (refcount), используемый установщиками MSI?
Таким образом, скажем, 3 продукты все установить ту же DLL, то RefCount находится в 3. При запуске программы удаления для одного из продуктов, деинсталлятор уменьшает refcount до 2, но фактически не удаляет файл.
Я использую нестандартный установщик, который будет падать в нескольких файлах, которые также установлены обычным установщиком. Мне было интересно, есть ли простой способ программно увеличивать/уменьшать счетчик файлов для этих файлов? Есть ли Windows SDK для этого?
Эта статья рассказывает о концепции, но не вдаваться в подробности о том, как осуществить это: http://msdn.microsoft.com/en-us/library/ms954376.aspx
Заранее спасибо за любую помощь!
Вы уверены, что это не было бы проще просто уроните DLL рядом с исполняемым файлом, и запустить его бок о бок? Тогда вам не придется беспокоиться о версировании вообще. –
Мой «инсталлятор» является подмножеством установщика MSI, и оба они фактически устанавливаются в одно и то же место ... –
Кажется, что достаточно просто сделать значение реестра, и если оно существует, то увеличьте значение на единицу и запишите его, и если он не создает этот элемент со значением 1. Но я согласен с @Robert Harvey - насколько вы можете избежать [DLL ад] (http://en.wikipedia.org/wiki/DLL_hell) , вы должны это сделать. – ewall