Ошибка Light.exe LGHT0307 'Microsoft.Tools.WindowsInstallerXml.AssemblyDefaultWixExtensionAttribute' не определен в сборке - PullRequest
1 голос
/ 27 сентября 2019

Я создаю командный файл, используя свет wix и свечу, чтобы создать msi для проекта.

Я получаю эту ошибку при запуске командного файла:

light.exe: ошибка LGHT0307: Либо «Microsoft.Tools.WindowsInstallerXml.AssemblyDefaultWixExtensionAttribute» не был определен в сборкеили тип, определенный в расширении 'C: \ Users \ User1 \ Documents \ testProj \ CustomAction \ bin \ Debug \ CustomAction.dll', не может быть загружен.

Я проверил путь к файлу CustomAction.dll и проверил это правильно.Я добавил расширение CustomAction.dll к команде light.Я запускаю этот командный файл из командной строки Windows в режиме администратора.

Пакетный файл

---- Строка 1 -----

"% WIX% bin \ свеча" * .wxs -dCustomAction.TargetDir ="C: \ Users \ User1 \ Documents \ testProj \ CustomAction \ bin \ Debug \" -o obj \ Debug \

---- Строка 2 ----------

"% WIX% bin \ light" obj \ Debug * .wixobj -ext "C: \ Users \ User1 \ Documents \ testProj \ CustomAction \ bin \ Debug \ CustomAction.dll" -ext "C: \ Users \ User1\ Documents \ testProj \ CustomAction \ bin \ Debug \ CustomAction.CA.dll "-ext" C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin \ WixUIExtension.dll "-ext" C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin "-ext WixIIsExtension -ext WixNetFxExtension -ext WixUIExtension -ext WixUtilExtension -ext" C: \ Users \ User1 \ Documents \ testProj \ Utils \ bin \ Debug \ Utils.dll "-o obj\ Debug \ CommandLineInstaller.msi

Я ожидаю, что это будет правильно генерировать файл MSI, но я получаю сообщение об ошибке code error LGHT0307.

Я удалил CustomActino.dll и CustomAction.CA.DLL из командной строки свечи.Я удалил C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin \ WixUIExtension.dll и включил -ext "C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin" в команду light.В настоящее время я получаю эту ошибку "light.exe: ошибка LGHT0144: не удалось загрузить расширение 'C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin' по следующей причине: не удалось загрузить файл или сборку'file: /// C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin' или одна из его зависимостей. Доступ запрещен. "

Вот новая командная строка:"% WIX% bin \ light "obj \ Debug * .wixobj -ext" C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin "-ext" C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin\ WixUIExtension.dll "-ext" C: \ Program Files (x86) \ WiX Toolset v3.11 \ bin "-ext WixIIsExtension -ext WixNetFxExtension -ext WixUIExtension -ext WixUtilExtension -ext" C: \ Users \ User1 \ Documents \ testProj\ Utils \ bin \ Debug \ Utils.dll "-o obj \ Debug \ CommandLineInstaller.msi

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

MSBuild : Большинство людей используют MSBuild - я считаю - для сборки через командную строку, как это. В справочном материале WiX есть раздел об использовании MSBuild .


Библиотека пользовательских действий : я включаю пользовательскиеDLL-файлы действий из исходного файла WiX.Вот пример с жестко запрограммированными путями в исходном файле WiX для того, как вы можете включить свое пользовательское действие dll:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" Name="SimpleCustomAction" Language="1033" Version="1.0.0.0"
           Manufacturer="-" UpgradeCode="">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate EmbedCab="yes" />    
    <Feature Id="ProductFeature" Title="SimpleCustomAction" Level="1" />

<!-- START: Custom action entries -->

    <!-- Hard coded SourceFile path to compiled C# dll Win32 wrapper (MakeSfxCA.exe) -->
    <Binary Id="CustomActions" SourceFile="C:\CustomAction1.CA.dll" /> 

    <!-- BinaryKey => Use Binary element Id from above entry-->
    <!-- DllEntry => Exported method name inside dll (C# method name) -->
    <CustomAction Id="SimpleCustomAction" BinaryKey="CustomActions" DllEntry="CustomAction1"/>

    <!-- Run custom action -->
    <InstallExecuteSequence>
      <Custom Action="SimpleCustomAction" After="CostFinalize" />
    </InstallExecuteSequence>

<!-- END: Custom action entries -->    

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="SimpleCustomAction">
          <Component Feature="ProductFeature">
            <File Source="C:\Windows\System32\Notepad.exe" />
          </Component>
        </Directory>
      </Directory>
    </Directory>

  </Product>
</Wix>

Пакетная сборка : этого должно быть достаточнонет необходимости указывать что-либо в командах candle.exe и light.exe для построения MSI.Вот несколько примеров команд:

"%WIX%bin\candle.exe" product.wxs -ext WixUIExtension >> Build.log
"%WIX%bin\light.exe" -out Test.msi product.wixobj -ext WixUIExtension >> Build.log
0 голосов
/ 28 сентября 2019

DLL-библиотеки пользовательских действий : я думаю, что вам, возможно, придется извлечь запись CustomAction.dll в light.exe командная строка.Может быть, убрать все записи и добавить обратно одну запись за раз.См. Примеры командных строк ниже.

  • CustomAction.dll - Сборка управляемого кода dll
  • CustomAction.CA.dll - Оболочка Win32 dll для управляемогокод dll: CustomAction.dll

MakeSfxCA.exe : последний - то, что вы должны включить в свойMSI.Инструмент DTF ( Deployment Tools Foundation ) MakeSfxCA.exe создает эту версию .CA управляемой DLL.Он содержит все необходимые файлы конфигурации для вашей управляемой DLL для запуска.Вы можете открыть CustomAction.CA.dll с помощью 7Zip или другой, способной к сжатию программы для просмотра содержимого.

Пакетная сборка : Минимальнаякомандная строка для создания проекта WiX (если вы используете графический интерфейс WiX по умолчанию) - и как сделать простой проект WiX в Visual Studio :

 candle.exe product.wxs -ext WixUIExtension
 light.exe -out Test.msi product.wixobj -ext WixUIExtension

Votive : Полагаю, вы могли бы попытаться построить проект WiX в Visual Studio, чтобы увидеть, какие командные строки используются для candle.exe и light.exe во встроенном окне вывода.Это должно дать вам подсказку, что может быть ненужным (я полагаю, это может быть то, что вы уже сделали):

Output


Ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...