WiX:RemoveFile声明仅在安装时删除文件

时间:2016-10-14 21:17:28

标签: wix

我的wxs文件中有以下代码段。无论我将On属性设置为两者还是卸载它都不会从Trace文件夹中删除带有跟踪扩展名的文件。它只在安装时才能正常工作。如果我只将On属性更改为两者或安装它在安装时工作,但从不在卸载过程中工作,无论是同时还是卸载。

<Directory Id="TRACEDIR" Name="Trace">
    <Component Id="Trace" Guid="*" KeyPath="yes">
        <RemoveFile Id="RemTraceFiles" On="both" Name="*.trace"/>
    </Component>
</Directory>

请问任何想法?

我没有为以下问题创建另一个错误,相反,我在下面添加了它,因为我相信,它可能与上面的问题有一些联系。这两种情况都可能是失败的原因。所以我的第二个问题是关于同一文件中的以下场景,但是,这次是文件夹删除,而不仅仅是文件删除。假设我们有:

<Property Id="LOGDIREX">
    <DirectorySearch Id="CheckLogDir" Path="[INSTALLDIR]\Log" Depth="1" AssignToProperty="yes" />
</Property>

...  

<Directory Id="LOGDIR" Name="Log">
    <Component Id="Log" Guid="01978736-614F-46C1-88FA-056284510164">
        <!--RemoveFolder Id='LogFolder' On='both' /-->
        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\FoobarLog' Type='string' Value='' KeyPath='yes' />
        <utilExt:RemoveFolderEx Id='LogFolder' On='both' Property='LOGDIREX'/>
    </Component>
</Directory>

因此,在此示例中,如果我使用UtilExtension库的RemoveFolderEx标记声明,则安装和卸载过程中的安装目录下的Log文件夹都将被删除。但是,如果我评论RemoveFolderEx声明并取消注释以使用在RemoveFolderEx声明上方声明的常规Wix RemoveFolder,那么它既不会在安装时也不会在卸载过程中删除Log文件夹。

有什么想法吗?

请注意,这个问题中的Directory声明,TRACEDIR和LOGDIR都是在INSTALLDIR下声明的,这是我的应用程序的一些目录。

1 个答案:

答案 0 :(得分:0)

TRACEDIR是一个自定义属性,我假设您认为在安装和卸载之间以某种方式保存了属性的值,但它们不是。这意味着您需要保留并恢复TRACEDIR的值,而WiX“记住属性”模式可能就是您所需要的。

http://robmensching.com/blog/posts/2010/5/2/the-wix-toolsets-remember-property-pattern/

另请注意,INSTALLDIR的目录搜索可能会失败,因为该搜索在安装的早期发生,并且不清楚INSTALLDIR是否具有有效值。

此外,您可以使用系统日志记录策略创建卸载的详细日志以查看您的属性的设置位置,或者:

msiexec / x {productcode} / L * VX [日志文件的路径]

也应该有效。

相关问题