Как я могу получить проект WiX, чтобы забрать исполняемый файл - PullRequest
1 голос
/ 14 апреля 2020

Я столкнулся с проблемой в проекте VS2017, который я строю. По какой-то причине проект WiX не может найти исполняемые и связанные файлы. Я получаю следующее сообщение об ошибке:

Системе не удается найти файл '...... \ Bin \ Debug \ PSALERTSScheduleServer.exe'.

Я проверил и файл PSALERTSScheduleServer. exe определенно находится в указанной относительной папке.

Я использовал метод определенной переменной, чтобы успешно хранить местоположение исполняемого файла в проектах WiX для ряда различных проектов на протяжении многих лет, однако этот ' против тренда: «Я использую WiX 3.11. Вот файл product.wsx для проекта:

 <?xml version="1.0" encoding="UTF-8"?>
 <?define SourceDir = "..\..\..\Bin\Debug" ?>
 <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"  xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
 <Product Id="*" Name="PSALERTSScheduleServerProduct" Language="1033" Version="5.3.0.8" Manufacturer="SP Energy Networks" UpgradeCode="a3baddfc-0965-47ed-a30f-be5eae7bc2df">
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

    <Feature Id="ProductFeature" Title="PSALERTS ScheduleServer 2018" Level="1">
  <ComponentRef Id="cmpDirScheduleServer" />
  <ComponentRef Id="cmpScheduleServerExe" />
  <ComponentRef Id="cmpScheduleServerPdb" />
    </Feature>
</Product>

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

<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
  <!-- The following section deals with the deployment of the program, config and related data files-->
  <Directory Id="ProgramFilesFolder">
    <Directory Id="dirSPEnergyNetworks" Name="SP Energy Networks">
      <Directory Id="dirPSALERTS" Name="PSALERTS">
        <Directory Id="dirScheduleServer" Name="PSALERTS Schedule Server">
          <Component Id="cmpDirScheduleServer" Guid="{a valid guid}" KeyPath="yes">
            <CreateFolder Directory="dirScheduleServer" />
            <RemoveFile Id="PurgeScheduleServer" Name="*.*" On="uninstall" />
            <RemoveFolder Id="idDirScheduleServer" On="uninstall" Directory="dirScheduleServer" />
          </Component>

          <Component Id="cmpScheduleServerExe" Guid="{a valid guid}">
            <File Id="filScheduleServerExe"
                  KeyPath="yes"
                  Source="$(var.SourceDir)\PSALERTSScheduleServer.exe"
              />
            <ServiceInstall Id="cmpScheduleServerExe"
                                Type="ownProcess"
                                Name="psaschdsrvr2018"
                                DisplayName="PSALERTS Schedule Server 2018"
                                Description="For automatic generation and delivery of PSALERTS reports."
                                Start="demand"
                                Account="LocalSystem"
                                ErrorControl="normal">
              <util:PermissionEx
                        User="Everyone"
                        ServicePauseContinue="yes"
                        ServiceQueryStatus="yes"
                        ServiceStart="yes"
                        ServiceStop="yes"
                        ServiceUserDefinedControl="yes"
                                  />
            </ServiceInstall>
            <!-- <ServiceControl 
                              Id="cmpScheduleServerExe" 
                              Start="install" Stop="both" 
                              Remove="uninstall" 
                              Name="psaschdsrvr2018" 
                              Wait="yes" 
                   />-->
            <RemoveRegistryKey Id="RemoveScheduleServerRegKey" Root="HKLM" Key="SOFTWARE\SP Energy Networks\PSALERTS\Schedule Server" Action="removeOnUninstall" />
          </Component>

          <Component Id="cmpScheduleServerPdb" Guid="{a valid guid}">
            <File Id="filScheduleServerPdb" KeyPath="yes" Source="$(var.SourceDir)\PSALERTSScheduleServer.pdb" />
          </Component>
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Directory>              

...