Мне пришлось изменить свой проект на x64, и теперь, следуя этому руководству, я также пытаюсь изменить установку WIX на x64. Но установка WIX пытается установить службу windows. Этот сервис выдает следующее исключение в install.log с msiexec /i Setup.msi /L*V install.log
:
System.Reflection.TargetInvocationException: A call target caused an exception. ---> System.BadImageFormatException: The file or Assembly "Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" or a dependency on it was not found. An attempt was made to load a file with the wrong format.
at SaveServiceConfigurationAction.CustomActions.SaveServiceConfiguration(Session session)
--- End of internal exception batch monitoring ---
bei System.RuntimeMethodHandle.InvokeMethod(Object target, Object arguments, Signature sig, Boolean constructor)
bei System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object parameters, Object arguments)
bei System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture)
at Microsoft.Deployment.WindowsInstaller.CustomActionProxy.InvokeCustomAction(Int32 sessionHandle, String entryPoint, IntPtr remotingDelegatePtr)
CustomAction SaveServiceConfigurationAction returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Когда я пытаюсь установить этот сервис с installutil.exe
, я получаю похожее исключение
System.BadImageFormatException: The file or assambly "Service.exe" or a dependency on it was not found. An attempt was made to load a file with the wrong format.
Но если я использую Framework64\v4.0.30319\installutil.exe
, служба может быть установлена без проблем.
Так что теперь мой вопрос: как мне настроить мой проект WIX для использования Framework64 для установки службы?
Мой WIX- Код:
<Component Id="CMP_Service" Feature="Core">
<File Source="$(var.Service.TargetPath)" KeyPath="yes">
<fire:FirewallException Id="ServiceException" Name="Service Exception" Protocol="tcp" Port="[PORTProperty]" Scope="any" />
</File>
<ServiceInstall Id="ServiceInstallELS"
Name="Service"
Description="..."
Start="auto"
Account="[SERVICEACCOUNT]"
ErrorControl="normal"
Type="ownProcess"
Vital="no" />
<ServiceControl Id="ServiceControllELS"
Name="Service"
Start="install"
Stop="both"
Remove="uninstall"
Wait="no" />
</Component>