WIX установить windows сервис с x64 - PullRequest
0 голосов
/ 10 января 2020

Мне пришлось изменить свой проект на 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>
...