2012-01-30 100 views
0

我的安装程序添加了服务使用的Windows服务和DLL。这些DLL是可以使用安装程序添加或删除的功能。WiX - 修改现有产品 - 删除功能后删除文件

当使用更改对话框删除一次安装的功能时,相应的DLL不会被删除,并且仍然存在于系统中。这不是预期的行为 - 我希望在取消某个功能后删除DLL。

这里的功能如何被定义

<Feature Id="Modules" Title="Modules" Level="1" ConfigurableDirectory="WIXUI_INSTALLDIR" 
     Display="expand" AllowAdvertise='no' InstallDefault='local' Absent='disallow'> 
<ComponentRef Id="MyModules" /> 
<Feature Id="Feature1" Title="F1" Level="0" ConfigurableDirectory="WIXUI_INSTALLDIR"> 
    <Condition Level="1">Some condition</Condition> 
    <ComponentRef Id="Module1" /> 
</Feature> 

<Component Id="Module1" Guid="GUID"> 
<File Id="File.Module1" Source="$(var.BuildDestination)/$(var.NameSpacePrefix).Module1.dll"> 
</File> 

+0

也许文件正在使用,防止它被删除? – 2012-01-31 01:00:29

+0

@WimCoenen该服务使用的文件(DLL),但它应该在安装过程中停止。 '<的ServiceControl编号= “StartService” NAME = “则将MyService” 开始= “安装” 停止= “既” 删除= “既” 等待= “是” />' – MrBob 2012-01-31 09:28:28

+0

尝试创建一个详细的日志,搜索为InstallValidate行动,看看为什么不卸载DLL:http://setupanddeployment.com/debugging/msi-log/ – 2012-01-31 09:54:46

回答

1

原来,这个问题是由在变化过程中没有得到满足的功能条件引起的。 取出后的

<Condition Level="1">Some condition</Condition> 

安装程序删除过时的DLL文件没有问题。