WiX CustomAction для регистрации провайдера аутентификации ADFS - PullRequest
0 голосов
/ 28 апреля 2020

Я следую Microsoft Создание пользовательского метода проверки подлинности для AD FS в Windows Server руководстве по созданию настраиваемого поставщика проверки подлинности для ADFS, и я на этапе развертывания, в котором говорится:

Поставщики адаптеров должны предоставить установщик, который выполняет необходимые действия по установке, включая установку в GA C, и установщик должен поддерживать регистрацию в AD FS.

Я был удалось установить адаптер на GA C с помощью WiX и вручную зарегистрировать его в ADFS с помощью PowerShell, но я получаю сообщение об ошибке от установщика Windows, когда WiX пытается автоматически зарегистрировать провайдера в ADFS через CustomAction: Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor.

Полные журналы показаны ниже:

MSI (s) (E4:78) [10:02:27:412]: Executing op: ActionStart(Name=RegisterAdfsProvider,,)
MSI (s) (E4:78) [10:02:27:413]: Executing op: CustomActionSchedule(Action=RegisterAdfsProvider,ActionType=3106,Source=C:\,Target=Register-AdfsAuthenticationProvider -TypeName "MyAuthenticationAdapter.MyAdapter, MyAuthenticationAdapter, version=1.0.0.0, culture=neutral, publicKeyToken=D006C127CE4A16A7, processorArchitecture=MSIL" -Name MyAuthenticationProvider,)
MSI (s) (E4:78) [10:02:27:416]: Note: 1: 1721 2: RegisterAdfsProvider 3: C:\ 4: Register-AdfsAuthenticationProvider -TypeName "MyAuthenticationAdapter.MyAdapter, MyAuthenticationAdapter, version=1.0.0.0, culture=neutral, publicKeyToken=D006C127CE4A16A7, processorArchitecture=MSIL" -Name MyAuthenticationProvider 
MSI (s) (E4:78) [10:02:27:416]: Note: 1: 2205 2:  3: Error 
MSI (s) (E4:78) [10:02:27:416]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1721 
MSI (c) (0C:B0) [10:02:27:429]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: RegisterAdfsProvider, location: C:\, command: Register-AdfsAuthenticationProvider -TypeName "MyAuthenticationAdapter.MyAdapter, MyAuthenticationAdapter, version=1.0.0.0, culture=neutral, publicKeyToken=D006C127CE4A16A7, processorArchitecture=MSIL" -Name MyAuthenticationProvider 
MSI (s) (E4:78) [10:02:28:198]: Note: 1: 2205 2:  3: Error 
MSI (s) (E4:78) [10:02:28:198]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709 
MSI (s) (E4:78) [10:02:28:198]: Product: MyAuthenticationAdapter -- Error 1721. There is a problem with this Windows Installer package. A program required for this install to complete could not be run. Contact your support personnel or package vendor. Action: RegisterAdfsProvider, location: C:\, command: Register-AdfsAuthenticationProvider -TypeName "MyAuthenticationAdapter.MyAdapter, MyAuthenticationAdapter, version=1.0.0.0, culture=neutral, publicKeyToken=D006C127CE4A16A7, processorArchitecture=MSIL" -Name MyAuthenticationProvider 

Action ended 10:02:28: InstallFinalize. Return value 3.

Если я скопирую команду из журналов и вручную запустю ее в PowerShell, она будет успешно завершена. Мой код в файле .wxs выглядит следующим образом:

<SetProperty  Id="ADFS_PROVIDER_TYPE_NAME"
              Value="MyAuthenticationAdapter.MyAdapter, !(bind.assemblyFullName.MyAuthenticationAdapter)"
              Before="RegisterAdfsProvider"
              Sequence="execute"/>
<CustomAction Id="RegisterAdfsProvider"
              Directory="TARGETDIR"
              ExeCommand="Register-AdfsAuthenticationProvider -TypeName &quot;[ADFS_PROVIDER_TYPE_NAME]&quot; -Name MyAuthenticationProvider"
              Execute="deferred"
              Impersonate="no"/>
<InstallExecuteSequence>
  <Custom Action="RegisterAdfsProvider" Before="InstallFinalize">NOT Installed AND NOT REMOVE~="ALL"</Custom>
</InstallExecuteSequence>

Что не так с моим файлом WiX, который вызывает эту ошибку во время установки?

1 Ответ

0 голосов
/ 29 апреля 2020

Первоначальная ошибка была правильной. Я работал с несколькими различными способами выполнения команды, прежде чем понял, что команда, которую я пытался выполнить, на самом деле была командлетом PowerShell, который не может быть выполнен с помощью атрибута ExeCommand пользовательской операции. Я обнаружил это, запустив gcm "Register-AdfsAuthenticationProvider" в PowerShell и получив вывод:

CommandType   Name                                  Version   Source
-----------   ----                                  -------   ------
Cmdlet        Register-AdfsAuthenticationProvider   1.0.0.0   ADFS
...