2013-11-21 2 views
1

У меня есть две версии моего продукта, которые необходимо поместить некоторые общие библиотеки DLL в папку bin другой компании. Я смог выполнить это с помощью элемента CopyFile, но я не могу заставить механизм подсчета ссылок работать. Проблема, с которой я сталкиваюсь, заключается в том, что при установке обеих версий (поддерживаемый сценарий), а затем одна версия удаляется, эти общие библиотеки DLL удаляются, что вызывает проблемы в другой версии.WiX: Как ссылаться на подсчитанные общие библиотеки DLL при копировании в папку bin другой компании?

Я попытался атаковать эту проблему с нескольких углов, но ничего не было успешным. Возможно ли это? Или я чего-то не хватает?

ответ

0

Я нашел решение, которое сработало для меня.

  1. Сначала я использовал элемент RegistrySearch, чтобы сохранить путь в элемент Proprty.

  2. Во-вторых, я создал новый компонентный элемент с таким же идентификатором GUID в обеих версиях. В этом компоненте я создал новый RegistryValue и использовал это как ключевой путь. Затем добавлены элементы CopyFile для каждой общей DLL.

  3. Добавлен элемент ComponentRef в элемент-элемент.

Вот код Часть 1:

<Property Id="ANOTHERPRODUCTSPATH"> 
    <RegistrySearch Id="ANOTHERPRODUCTSPATH" Root="HKLM" Key="SOFTWARE\Wow6432Node\XXXX\XXXX\XXXXX" Name="[whateverItIs]" Type="raw" /> 
</Property> 

Вот код для части 2:

<Component Id="CommonDLLs" Guid="[Your-GUID]" Directory="Doesn'tMatterButRequiredForSomeReason"> 
    <RegistryValue Id="yourid" Root="YourRoot" Key="YourNewKey" Name="Installed" Value="1" Type="integer" KeyPath="yes" /> 
    <CopyFile Id="Shared1.dll" FileId="Shared1.dll" DestinationProperty="ANOTHERPRODUCTSPATH" DestinationName="Shared1.dll"/> 
    <CopyFile Id="Shared2.dll" FileId="Shared2.dll" DestinationProperty="ANOTHERPRODUCTSPATH" DestinationName="Shared2.dll"/> 
    ...//the rest of your shared dlls 
</Component> 

И Часть 3:

<Feature Id="ProductFeature" Title="$(var.ProductNameLong)" Level="1" 
     ConfigurableDirectory="INSTALLLOCATION" TypicalDefault="install" > 

    ...//existing componentrefs 
    <ComponentRef Id="CommonDLLs" /> 


</Feature> 
Смежные вопросы