Я использую автогиды в своем <Product>
, но не могу понять, как их использовать с <Module>
. Я только получаю эту ошибку:Могу ли я использовать автоматически созданные GUID с модулем слияния?
The component X has a key file with path 'TARGETDIR\company...'. Since this path is not rooted in one of the standard directories (like ProgramFiles Folder), the component does not meet the criteria for having an automatically generated guid.
выше, company
это значение отображается на !(loc.ProductManufacturerFolderName)
.
Единственная проблема - это неправда. Мои каталоги коренятся в ProgramFiles так же, как мой продукт и мой продукт прекрасно работает:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="MODULEINSTALLLOCATION" Name="!(loc.ProductManufacturerFolderName)">
<Directory Id="Data" Name="Data">
Все мои заявления компонентов выглядят примерно так:
<Component Id="DocumentationParty_Business_TestCases_v1xlsx.component" Guid="{YOURGUID-1234-1234-84B3-C595A63428AD}" MultiInstance="yes">
<File Source="../../Development/Integration/SSIS/Documentation/Party_Business_Test Cases_v1.xlsx" KeyPath="yes" Id="DocumentationParty_Business_TestCases_v1xlsx.file" />
</Component>
Ломать легко, у вас есть только для изменения идентификатор GUID до *
и приведенные выше ошибки. Это не работает:
<Component Id="DocumentationParty_Business_TestCases_v1xlsx.component" Guid="*" MultiInstance="yes">
<File Source="../../Development/ClaimsIntegration/SSIS/Documentation/Party_Business_Test Cases_v1.xlsx" KeyPath="yes" Id="DocumentationParty_Business_TestCases_v1xlsx.file" />
</Component>
У меня есть файл .wxs для каждого каталога, в который будут установлены компоненты. Все мой компонент удерживающее .wxs файлы имеют следующую структуру:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<ComponentGroup Id="DatabasePolicy_Files">
<ComponentRef Id="DatabasePolicyCreateDatabasecmdtemplate.component" />
</ComponentGroup>
<DirectoryRef Id="DataPolicy">
<Component Id="DatabasePolicyCreateDatabasecmdtemplate.component" Guid="*" MultiInstance="yes">
<File Source="../../Development/Database/Policy/CreateDatabase.cmd.template" KeyPath="yes" Id="DatabasePolicyCreateDatabasecmdtemplate.file" />
</Component>
</DirectoryRef>
</Fragment>
</Wix>
Каждый <ComponentGroup>
входит в мой мастер .wxs файл через <ComponentGroupRef>
. Это работает во всех моих проектах MSI и ломается только сейчас, когда я начал работать с модулями слияния. Кроме того, я пробовал комментировать все компоненты, кроме тех, которые соответствуют указанному выше определению, и он по-прежнему прерывается с той же ошибкой.
В чем проблема?
Сообщение об ошибке упоминает 'папку TARGETDIR \ company', но' company' часть не существует в вашем фрагменте кода. Может ли быть так, что компонент X имеет другой родительский каталог, и что говорит сообщение об ошибке? –
@YanSklyarenko 'company' - это значение, отображаемое на'! (Loc.ProductManufacturerFolderName) '. Я попытаюсь изменить свой пост, чтобы сделать это более ясным. – sirdank
Можете ли вы добавить фрагмент с объявлением компонента X? –