仅在卸载时删除文件夹,而不是升级

时间:2014-05-19 13:49:01

标签: wix windows-installer

我正在尝试配置继承的WiX安装程序以用于我的软件。

该软件在C:\ SomePath \ LogFiles中记录日期特定文件,如2014-05-19.txt,2014-05-18.txt等等(与问题无关,但也许值得注意的是将出现由软件创建的文件,但不会由安装程序本身创建。

我的WiX安装程序会像这样创建LogFiles目录(为了便于阅读,删除了许多元素,GUID等):

<Wix>
    <Product Id="SOME_GUID" Version="SOME_VERSION" UpgradeCode="OTHER_GUID">
        <Feature Id="EMPTY_DIRECTORIES" Title="Empty Directories" Level="1" Display="hidden">
            <ComponentRef Id="SomeFolder" />
            <ComponentRef Id="LogFiles" />
            <ComponentRef Id="SomeOtherFolder" />
        </Feature>
        <DirectoryRef Id="DIR_LOG_FILES">
            <Component Guid="" Id="DELETE_DIR_LOG_FILES">
                <RemoveFile Id="DELETE_DIR_LOG_FILES_FILES" Name="*.*" On="uninstall" /> 
                <RemoveFolder Id="DELETE_DIR_LOG_FILES" On="uninstall" />
            </Component>
        </DirectoryRef>
     </Product>
     <Fragment>
         <Directory Name="SoftwareName" Id="SOFTWARENAME">
             <Directory Id="DIR_LOG_FILES" Name="LogFiles">
                 <Component Id="LogFiles" KeyPath="no" NeverOverwrite="no" Permanent="no" Win64="no" Location="local">
                     <CreateFolder>
                         <util:PermissionEx CreateChild="yes" CreateFile="yes" Delete="yes" Read="yes" ReadAttributes="yes" ReadExtendedAttributes="yes" ReadPermission="yes" Traverse="yes" GenericRead="yes" GenericWrite="yes" User="Everyone" />
                      </CreateFolder>
                  </Component>
              </Directory>
           </Directory>
      </Fragment>
      <Fragment>
          <ComponentGroup Id="LoggingComponents" Directory="WHERE_THE_LOGGING_DLLS_LIVE">
              <ComponentRef Id="DELETE_DIR_LOG_FILES" />
          </ComponentGroup>
      </Fragment>
</Wix>

我曾希望此设置会导致仅在卸载时删除目录和内容。不幸的是,删除似乎也会在升级时触发。有没有办法配置WiX来区分并做出适当的反应?

1 个答案:

答案 0 :(得分:0)

在构建过程中,您是否更新了要生成的dll的版本,因为它应该覆盖它。您是否有任何删除文件/文件夹标签,因为它们也可能导致问题。