Wix - не удается перекомпилировать WXS в обратном порядке из MSI - ICE68: неверный тип настраиваемого действия для действия - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь обновить пакет Wix (последний запуск 6 лет go) через расширение Wix для Visual Studio 2019. У меня нет опыта работы с файлами Wix или Msi.

Я исправил скрипт, который у нас был, чтобы включить новые компоненты и удалить устаревшие компоненты. Тем не менее, он не может быть собран со следующими сообщениями:

Error       ICE68: Invalid custom action type for action '_901E28F5_5222_4D39_B080_BBDFD2D558BF.install.SetProperty'
Error       ICE68: Invalid custom action type for action '_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall.SetProperty'

Ошибка возникает в строках 15 и 17 следующим образом:

14    <CustomAction Id="_901E28F5_5222_4D39_B080_BBDFD2D558BF.install" BinaryKey="InstallUtil" DllEntry="ManagedInstall" Execute="deferred" Impersonate="no" />
15    <CustomAction Id="_901E28F5_5222_4D39_B080_BBDFD2D558BF.install.SetProperty" Property="_901E28F5_5222_4D39_B080_BBDFD2D558BF.install" Value="/installtype=notransaction /action=install /LogFile= &quot;[#_02E1DEA55215061A3CC25B6DF52B45F7]&quot; &quot;[VSDFxConfigFile]&quot;" Impersonate="no" />
16    <CustomAction Id="_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall" BinaryKey="InstallUtil" DllEntry="ManagedInstall" Execute="deferred" Impersonate="no" />
17    <CustomAction Id="_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall.SetProperty" Property="_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall" Value="/installtype=notransaction /action=uninstall /LogFile= &quot;[#_02E1DEA55215061A3CC25B6DF52B45F7]&quot; &quot;[VSDFxConfigFile]&quot;" Impersonate="no" />

Идентификатор пользовательского действия указывается под <InstallExecuteSequence> пометить как:

  <Custom Action="_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall.SetProperty" Sequence="1651">$C__02E1DEA55215061A3CC25B6DF52B45F7=2</Custom>
  <Custom Action="_901E28F5_5222_4D39_B080_BBDFD2D558BF.uninstall" Sequence="1652">$C__02E1DEA55215061A3CC25B6DF52B45F7=2</Custom>
  <Custom Action="_901E28F5_5222_4D39_B080_BBDFD2D558BF.install.SetProperty" Sequence="5998">$C__02E1DEA55215061A3CC25B6DF52B45F7&gt;2</Custom>
  <Custom Action="_901E28F5_5222_4D39_B080_BBDFD2D558BF.install" Sequence="5999">$C__02E1DEA55215061A3CC25B6DF52B45F7&gt;2</Custom>

Компонент C__02E1DEA55215061A3CC25B6DF52B45F7 - это основной .exe-файл приложения, объявленный как:

  <Component Id="C__02E1DEA55215061A3CC25B6DF52B45F7" Guid="{8F0503F6-A642-2D2C-C370-49FEAA8F458D}">
    <File Id="_02E1DEA55215061A3CC25B6DF52B45F7" Name="MyApplication.exe" KeyPath="yes" ShortName="d_0k9edv.exe" Assembly=".net" AssemblyManifest="_02E1DEA55215061A3CC25B6DF52B45F7" AssemblyApplication="_02E1DEA55215061A3CC25B6DF52B45F7" DiskId="1" Source="bins\File\_02E1DEA55215061A3CC25B6DF52B45F7">
      <NativeImage Id="ngen_MyApplication.exe" Platform="32bit" Priority="1" xmlns="http://schemas.microsoft.com/wix/NetFxExtension" />
    </File>
    <Shortcut Id="_1BE76B3655A64533BB29E6D5DE370C53" Directory="_C6B6AF321296444185E915D4800B50FF" Name="My Application" ShortName="7onuutmc" Icon="_E927036F4145CB7F0D9F32.exe" IconIndex="0" Show="normal" WorkingDirectory="TARGETDIR" Advertise="yes" />
    <Shortcut Id="_F8B525F5B9314CB684B09B3AFD8F3F96" Directory="DesktopFolder" Name="My Application" ShortName="-uvlgxeh" Icon="_46C82FB57E11DA24ADA00F.exe" IconIndex="0" Show="normal" WorkingDirectory="TARGETDIR" Advertise="yes" />
  </Component>

MyApplication.exe - это приложение. NET и в него встроено настраиваемое кодовое действие «установщик» с использованием шаблона старого типа проекта Visual Studio vdproj, и я думаю, что именно эти объявления пытаются справиться.

Этот скрипт использовал для работы в 2014 году, когда это было в последний раз - изменилось ли что-нибудь в мире Wix, которое отключает эти действия?

Попытался и не смог сделать эту сборку с использованием файла Wix с 6 лет go Я использовал последнюю версию Dark для обратного инжиниринга файла .msi в .wxs. Он генерирует такие же строки и не строит.

Поэтому я изо всех сил пытаюсь понять, почему Dark генерирует что-то, что Light / Candle не может затем обработать.

1 Ответ

0 голосов
/ 24 февраля 2020

В то время как темнота может быть полезна, порой к ней ничего не скажешь, скажем, в Redgate. NET Отражатель с точки зрения возможности воссоздать исходный проект из встроенного MSI. Это даст вам полезные фрагменты, но это все.

Я бы либо попытался воспроизвести MSI, используя исходный источник из лет go, либо переписать MSI с нуля. FWIW, у меня есть инструмент с открытым исходным кодом IsWiX (https://github.com/iswix-llc/iswix-tutorials), который может помочь. Кроме того, я могу проконсультироваться, если вы просто хотите нажать на кнопку быстрого доступа и решить все как можно скорее.

...