MSI установщик - вызвать сценарий PowerShell - PullRequest
0 голосов
/ 29 марта 2019

У меня есть блокировщик при создании пакета установщика MSI, найдите приведенные ниже сведения и дайте мне знать, если есть какие-либо решения,

Я написал сценарий PowerShell для автоматизации предоставления виртуальной машины Hyper-V (тип экземпляра AWS i3.metal), и сценарий работает нормально.

Я хочу, чтобы этот скрипт PowerShell использовался в качестве установочного пакета MSI. Работа в версии сообщества Visual Studio 2017 для создания пакета установщика MSI Для этого я использовал команды установщика WIX и создал файл wxs, чтобы сделать MSI

Успешно создан установщик MSI с использованием WIX, но при установке этого MSI он не вызывает сценарий PowerShell

Но я мог видеть, что приложение установлено (указано в панели управления и папка установки создается в C: \ programFiles)

Использовал wix SetProperty, CustomAction & InstallExecuteSequence cmd, но безуспешно с вызовом скрипта Powershell

Это для нового сервера Windows

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="19fe6e20-a840-4829-8883-bde0bfa51d4c" Name="testing" Language="1033" Version="1.0.0.0" Manufacturer="muni" UpgradeCode="93008c8b-adb9-4498-8be2-4a83162b3a35">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
    <MediaTemplate />

    <Feature Id="ProductFeature" Title="test" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
    </Feature>
  </Product>

  <Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
      <Component Id="ProductComponent">
        <File Source="C:\Users\Administrator\source\repos\testMSI\test\Invoke-Test.ps1" Id="InvokeTestPS1"  />
      </Component>
    </ComponentGroup>
  </Fragment>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="INSTALLFOLDER" Name="testing" />
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <DirectoryRef Id="INSTALLFOLDER">
      <Component Guid="*">
        <File Id="InvokeTestPS1" Source="Invoke-Test.ps1" />
      </Component>
    </DirectoryRef>

    <Property Id="POWERSHELLEXE">
      <RegistrySearch Id="POWERSHELLEXE"
                      Type="raw"
                      Root="HKLM"
                      Key="SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
                      Name="Path" />
    </Property>
    <Condition Message="This application requires Windows PowerShell.">
      <![CDATA[Installed OR POWERSHELLEXE]]>
    </Condition>

    <SetProperty Id="InvokeTestPS1"
             Before="InstallFinalize"
             Sequence="execute"
             Value ="&quot;[POWERSHELLEXE]&quot; -Version 2.0 -NoProfile -NonInteractive -InputFormat None -ExecutionPolicy Bypass -Command &quot;&amp; '[#InvokeTestPS1]' ; exit $$($Error.Count)&quot;" />
    <CustomAction Id="InvokeTestPS1"
                  BinaryKey="WixCA"
                  DllEntry="WixSilentExec"
                  Execute="immediate"
                  Return="check"
                  Impersonate="yes" />
    <InstallExecuteSequence>
      <Custom Action="InvokeTestPS1" After="InstallFinalize">
        <![CDATA[NOT Installed]]>
      </Custom>
    </InstallExecuteSequence>

  </Fragment>
  <Fragment>
    <Feature Id="Application" Title="Minefold" Level="1">
      <ComponentRef Id="ProductComponent" />
    </Feature>
  </Fragment>
</Wix>

Установщик MSI должен вызывать скрипт Powershell. Это означает, что как только я создал MSI, мне нужно установить, что MSI и MSI должны вызывать скрипт powershell

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