2012-01-30 83 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文件沒有問題。