Wix在安装文件夹中添加外部dll
Wix add external dll in the installation folder
我是 Wix 的新手,我正在尝试在 Visual Studio 2012 年使用 Wix 3.10 构建 windows 服务安装包,但我无法添加 dll 外部引用。
我有我的项目,它是我想安装的 Windwos 服务。 ParodosService.Setup 这是我的安装程序项目。 :
这是我来自 ParodosService.Setup 项目的 .wxs 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- The name of the product -->
<?define Name = "Vision Service" ?>
<!-- The manufacturer, for setup package publisher and folder info -->
<?define Manufacturer = "MyCompany" ?>
<!-- The version number of this setup package-->
<?define Version = "1.0.1" ?>
<!-- UpgradeCode must be unique and not changed once the first version of the program is installed. -->
<?define UpgradeCode = "{1240E0CD-B3D2-44A7-B064-11B3C0709D69}" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="$(var.Name)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.Version)" Language="1033">
<!-- Create a folder inside Talk Sharp called Test Service -->
<Package InstallerVersion="300" Compressed="yes"/>
<!-- Create a folder inside Talk Sharp called Test Service -->
<Media Id="1" Cabinet="ParodosService.cab" EmbedCab="yes" />
<!-- Allow upgrades and prevent downgrades -->
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
<!-- Define the directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<!-- Create a folder inside program files called Talk Sharp -->
<Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
<!-- Create a folder inside Talk Sharp called Test Service -->
<Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
</Directory>
</Directory>
</Directory>
<ComponentGroup Id="DllsComponent" Directory="INSTALLFOLDER" Source="C:\Users\Pasquale\Documents\Visual Studio 2012\Projects\ParodosService\ParodosService\bin\Release">
<Component Id="EntityFramework.dll">
<File Name="EntityFramework.dll" />
</Component>
<Component Id="EntityFramework.SqlServer.dll">
<File Name="EntityFramework.SqlServer.dll" />
</Component>
<Component Id="ParodosService.exe.config">
<File Name="ParodosService.exe.config" />
</Component>
</ComponentGroup>
<!-- The files inside this DirectoryRef are linked to the Test Service directory via INSTALLFOLDER -->
<DirectoryRef Id="INSTALLFOLDER">
<!-- Create a single component which is the ParodosService.exe file -->
<Component Id="$(var.ParodosService.TargetFileName)">
<!-- Copies the ParodosService.exe file using the project reference preprocessor variables -->
<File Id="$(var.ParodosService.TargetFileName)" Source="$(var.ParodosService.TargetPath)" KeyPath="yes" />
<!-- Remove all files from the INSTALLFOLDER on uninstall -->
<RemoveFile Id="ALLFILES" Name="*.*" On="both" />
<!-- Tell WiX to install the Service -->
<ServiceInstall Id="ServiceInstaller"
Type="ownProcess"
Name="ParodosService"
DisplayName="$(var.Name)"
Description="A Test Service that logs dummy text on an interval to a text file."
Start="auto"
ErrorControl="normal" />
<!-- Tell WiX to start the Service -->
<ServiceControl Id="StartService" Start="install" Stop="both" remove="uninstall" Name="ParodosService" Wait="yes" />
</Component>
</DirectoryRef>
<!-- Tell WiX to install the files -->
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="$(var.ParodosService.TargetFileName)" />
</Feature>
</Product>
</Wix>
我在 ComponentGroup 中手动添加了三个组件,指定了我在 windows 服务的安装文件夹中需要的三个文件。
这种手动修改,returns我每加一个文件就出错:
ICE21: Component: 'EntityFramework.dll' does not belong to any Feature.
因为我是 WIX 的新手,所以我也很难用 heat.exe 做到这一点,我认为这是更简单的方法,但两种方法都会给我错误...
错误消息告诉您您的组件是孤立的,它必须属于一个功能。
我认为,如果您像这样更改特征定义,它应该可以工作:
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="$(var.ParodosService.TargetFileName)" />
<ComponentGroupRef Id="DllsComponent"/>
</Feature>
我是 Wix 的新手,我正在尝试在 Visual Studio 2012 年使用 Wix 3.10 构建 windows 服务安装包,但我无法添加 dll 外部引用。
我有我的项目,它是我想安装的 Windwos 服务。 ParodosService.Setup 这是我的安装程序项目。 :
这是我来自 ParodosService.Setup 项目的 .wxs 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- The name of the product -->
<?define Name = "Vision Service" ?>
<!-- The manufacturer, for setup package publisher and folder info -->
<?define Manufacturer = "MyCompany" ?>
<!-- The version number of this setup package-->
<?define Version = "1.0.1" ?>
<!-- UpgradeCode must be unique and not changed once the first version of the program is installed. -->
<?define UpgradeCode = "{1240E0CD-B3D2-44A7-B064-11B3C0709D69}" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="$(var.Name)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)" Version="$(var.Version)" Language="1033">
<!-- Create a folder inside Talk Sharp called Test Service -->
<Package InstallerVersion="300" Compressed="yes"/>
<!-- Create a folder inside Talk Sharp called Test Service -->
<Media Id="1" Cabinet="ParodosService.cab" EmbedCab="yes" />
<!-- Allow upgrades and prevent downgrades -->
<MajorUpgrade DowngradeErrorMessage="A later version of [ProductName] is already installed. Setup will now exit." />
<!-- Define the directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<!-- Create a folder inside program files called Talk Sharp -->
<Directory Id="ROOTDIRECTORY" Name="$(var.Manufacturer)">
<!-- Create a folder inside Talk Sharp called Test Service -->
<Directory Id="INSTALLFOLDER" Name="$(var.Name)" />
</Directory>
</Directory>
</Directory>
<ComponentGroup Id="DllsComponent" Directory="INSTALLFOLDER" Source="C:\Users\Pasquale\Documents\Visual Studio 2012\Projects\ParodosService\ParodosService\bin\Release">
<Component Id="EntityFramework.dll">
<File Name="EntityFramework.dll" />
</Component>
<Component Id="EntityFramework.SqlServer.dll">
<File Name="EntityFramework.SqlServer.dll" />
</Component>
<Component Id="ParodosService.exe.config">
<File Name="ParodosService.exe.config" />
</Component>
</ComponentGroup>
<!-- The files inside this DirectoryRef are linked to the Test Service directory via INSTALLFOLDER -->
<DirectoryRef Id="INSTALLFOLDER">
<!-- Create a single component which is the ParodosService.exe file -->
<Component Id="$(var.ParodosService.TargetFileName)">
<!-- Copies the ParodosService.exe file using the project reference preprocessor variables -->
<File Id="$(var.ParodosService.TargetFileName)" Source="$(var.ParodosService.TargetPath)" KeyPath="yes" />
<!-- Remove all files from the INSTALLFOLDER on uninstall -->
<RemoveFile Id="ALLFILES" Name="*.*" On="both" />
<!-- Tell WiX to install the Service -->
<ServiceInstall Id="ServiceInstaller"
Type="ownProcess"
Name="ParodosService"
DisplayName="$(var.Name)"
Description="A Test Service that logs dummy text on an interval to a text file."
Start="auto"
ErrorControl="normal" />
<!-- Tell WiX to start the Service -->
<ServiceControl Id="StartService" Start="install" Stop="both" remove="uninstall" Name="ParodosService" Wait="yes" />
</Component>
</DirectoryRef>
<!-- Tell WiX to install the files -->
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="$(var.ParodosService.TargetFileName)" />
</Feature>
</Product>
</Wix>
我在 ComponentGroup 中手动添加了三个组件,指定了我在 windows 服务的安装文件夹中需要的三个文件。 这种手动修改,returns我每加一个文件就出错:
ICE21: Component: 'EntityFramework.dll' does not belong to any Feature.
因为我是 WIX 的新手,所以我也很难用 heat.exe 做到这一点,我认为这是更简单的方法,但两种方法都会给我错误...
错误消息告诉您您的组件是孤立的,它必须属于一个功能。
我认为,如果您像这样更改特征定义,它应该可以工作:
<Feature Id="MainApplication" Title="Main Application" Level="1">
<ComponentRef Id="$(var.ParodosService.TargetFileName)" />
<ComponentGroupRef Id="DllsComponent"/>
</Feature>