Service Wix窗口服务仅复制安装文件夹中的exe文件,而不是所有依赖项
我是wix新手,正在创建窗口服务。我已经创建了我的服务并成功地添加到窗口服务中,但当我运行它时,由于错误而停止Service Wix窗口服务仅复制安装文件夹中的exe文件,而不是所有依赖项,service,wix,window,Service,Wix,Window,我是wix新手,正在创建窗口服务。我已经创建了我的服务并成功地添加到窗口服务中,但当我运行它时,由于错误而停止 <?xml version="1.0" encoding="UTF-8"?> <?define Name = "New Window Service" ?> <?define Manufacturer = "GAT" ?> <?define UpgradeCode = "{0d4fb541-bb66-4df8-bdab-893564e1
<?xml version="1.0" encoding="UTF-8"?>
<?define Name = "New Window Service" ?>
<?define Manufacturer = "GAT" ?>
<?define UpgradeCode = "{0d4fb541-bb66-4df8-bdab-893564e191fc}" ?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util"
>
<Product Id="*" Name="$(var.Name)" Manufacturer="$(var.Manufacturer)" Version="1.0.0.0" UpgradeCode="$(var.UpgradeCode)" Language="1033">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<Media Id="1" Cabinet="GAT.GATAC.ServiceLayer.WindowsServiceHost.cab" EmbedCab="yes" />
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
<Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
</Directory>
</Directory>
</Directory>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetFileName)">
<CreateFolder />
<File Id="$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetFileName)" Source="D:\Projects\GATAC\GAT.GATAC.ServiceLayer.WindowsServiceHost\bin\Release\GAT.GATAC.ServiceLayer.WindowsServiceHost.exe" KeyPath="yes" Vital="yes" />
<File Id="GAT.GATAC.ServiceLayer.WindowsServiceHost.exe.config"
Name="MyProduct.exe.config"
Source="D:\Projects\GATAC\GAT.GATAC.ServiceLayer.WindowsServiceHost\bin\Release\GAT.GATAC.ServiceLayer.WindowsServiceHost.exe.config"
Vital="yes"
KeyPath="no"
DiskId="1" />
<RemoveFile Id="ALLFILES" Name="*.*" On="both" />
<util:XmlFile Id="ModifyServiceLocation" Action="setValue" ElementPath="/configuration/connectionStrings/add[\[]@name='DefaultConnection'[\]]/@connectionString" File="D:\Projects\GATAC\GAT.GATAC.ServiceLayer.WindowsServiceHost\bin\Release\GAT.GATAC.ServiceLayer.WindowsServiceHost.exe.config" Value="Data Source=[DB_SERVER];Initial Catalog=[DB_DATABASE];User Id=[DB_USER];Pwd=[DB_PASSWORD]"/>
<ServiceInstall Id="ServiceInstaller"
Type="ownProcess"
Name="GAT.GATAC.ServiceLayer.WindowsServiceHost"
DisplayName="$(var.Name)"
Description="A Test Service that logs dummy text on an interval to a text file."
Start="auto"
ErrorControl="normal"
/>
<ServiceControl Id="ServiceInstaller"
Stop="both"
Remove="both"
Name="GAT.GATAC.ServiceLayer.WindowsServiceHost"
Wait="yes" />
</Component>
</DirectoryRef>
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetFileName)" />
</Feature>
</Product>
</Wix>
当我在服务的安装文件夹中看到只有exe文件,因此如何在该文件夹中复制Windows服务的所有依赖项,我的代码如下。当我在安装文件夹中手动复制文件时,它可以工作。我是否需要获取是的,您需要将wxs中的所有文件作为要安装的组件包含在内 如果您有一些依赖项,您可以自己添加它们作为文件组件。如果有很多文件考虑使用热键为您生成WXS文件,您可以将文件元素复制到WXS代码中。如果文件依赖项可能频繁更改,请考虑使用热来生成WXS,并将其作为主安装程序中的链接文件。
理想情况下,所有依赖项都包含在GAT.GATAC.ServiceLayer.WindowsServiceHost项目的bin文件夹中,因此您可以使用$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetDir)DependencyFileName作为文件源。是,您需要将wxs中的所有文件作为要安装的组件包括在内 如果您有一些依赖项,您可以自己添加它们作为文件组件。如果有很多文件考虑使用热键为您生成WXS文件,您可以将文件元素复制到WXS代码中。如果文件依赖项可能频繁更改,请考虑使用热来生成WXS,并将其作为主安装程序中的链接文件。
理想情况下,所有依赖项都包含在GAT.GATAC.ServiceLayer.WindowsServiceHost项目的bin文件夹中,因此您可以使用$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetDir)DependencyFileName作为文件源。非常感谢您的回答,但使用时我会出错$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetDir)“未定义的预处理器变量”。我已经在wix项目中添加了项目引用。当您构建candle.exe和许多定义时,输出窗口中也应该有项目引用。您可以在该窗口中搜索“TargetDir”它应该显示GAT.GATAC…项目的-d.TargetDir=路径。也许这只是一个小错误。非常感谢您的回答,但当我使用$(var.GAT.GATAC.ServiceLayer.WindowsServiceHost.TargetDir)“未定义的预处理器变量”时,我会出错。我已经在wix项目中添加了项目引用。当您构建candle.exe时,输出窗口中应该有很多定义。您可以在该窗口中搜索“TargetDir”,它应该显示GAT.GATAC…项目的-d.TargetDir=Path。可能这只是一个小的输入错误。