MSG-файлы mergemodules показывают элементы файла GUID как NULL - PullRequest
0 голосов
/ 26 сентября 2018

Я перенес код из Wix 2.0 и 4.0.А также перенес Visual Studio 2005 в Visual Studio 2017 Затем, когда я строил проект wix

, я получил следующую ошибку:

light.exe (0,0) Ошибка LGHT0001: Значениене может быть пустым

Когда я проводил расследование, я обнаружил, что основной причиной проблемы является использование модулей слияния, которые я использовал.

У меня есть следующий код, связанный с модулями слияния в PCPE_Wix_Installer_EN.файл wxs.

<Merge Id="Microsoft_VC80_CRT_x86" Language="1033" DiskId="1" SourceFile="E:\Code\PCPE\Install\MSVC Dlls\Microsoft_VC80_CRT_x86.msm" />
<Merge Id="policy_8_0_Microsoft_VC80_CRT_x86" Language="1033" DiskId="1" SourceFile="E:\Code\PCPE\Install\MSVC Dlls\policy_8_0_Microsoft_VC80_CRT_x86.msm" />

<Feature Id="MicrosoftVCCRT" Title="Microsoft Visual Studio Redistributables" Level="1" Display="hidden">
<MergeRef Id="Microsoft_VC80_CRT_x86" />
<MergeRef Id="policy_8_0_Microsoft_VC80_CRT_x86"/>
</Feature>

А в Build.xml у меня есть следующий код

<property name="CRT.msm.file" location="${install}\MSVC Dlls\Microsoft_VC80_CRT_x86.msm"/>
  <property name="policy.msm.file" location="${install}\MSVC Dlls\policy_8_0_Microsoft_VC80_CRT_x86.msm"/>

<delete file="policy_8_0_Microsoft_VC80_CRT_x86.msm"/>
    <delete file="Microsoft_VC80_CRT_x86.msm"/>

Это пакеты MSM MergeModule, которые поставляются с Visual Studio 2005 и хранятся в общей папке.и использую сейчас.Но эти MSM-файлы отсутствуют в программных файлах / commanfiles. Теперь я не использую Visual Studio 2005.

А также я установил распространяемый Visual Studio 2017, чтобы получить самые последние файлы .msm

Microsoft_VC141_CRT_x86.msm

по следующему пути:

C: \ Program Files \ Microsoft Visual Studio \ 2017 \ Professional \ VC \ Redist \ MSVC \ 14.14.26405 \ MergeModules

Но я не использую MSM-файлы, созданные с помощью VS2017, вместо этого я использую MSM-файлы, созданные с помощью VS2005.

Но с изменениями при сборке проекта wix компиляция работает нормально.Но при связывании света выдается пустое исключение.

Ниже приведен файл .wixobj, созданный с помощью PCPE_Wix_Installer_EN.wxs

PCPE_Wix_Installer_EN.wixobj

А вот если мы увидимGUID показывает «{00000000-0000-0000-0000-000000000000}», как показано ниже:

<table name="WixMerge">
<row sourceLineNumber="E:\Code\PCPE\Wix\src\PCPE_WiX_Installer_EN.wxs*91"><field>Microsoft_VC80_CRT_x86</field><field>1033</field><field>INSTALLDIR</field><field>E:\Code\PCPE\Install\MSVC Dlls\Microsoft_VC80_CRT_x86.msm</field><field>1</field><field></field><field></field><field>{00000000-0000-0000-0000-000000000000}</field></row>

<row sourceLineNumber="E:\Code\PCPE\Wix\src\PCPE_WiX_Installer_EN.wxs*92"><field>policy_8_0_Microsoft_VC80_CRT_x86</field><field>1033</field><field>INSTALLDIR</field><field>E:\Code\PCPE\Install\MSVC Dlls\policy_8_0_Microsoft_VC80_CRT_x86.msm</field><field>1</field><field></field><field></field><field>{00000000-0000-0000-0000-000000000000}</field></row></table>

Итак, в конце концов я заподозрил, что из-за этого мы получаем исключение NULL-значений »LGHT0001: Значение не может быть пустым "

И на данный момент и для тестирования я прокомментировал вышеупомянутый фрагмент кода файла MSM в PCPE_Wix_Installer_EN.wxs, и с этим ошибка устранена.

Пожалуйста, предоставьте вашвходы и мысли по этому поводу.

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