Wix Majorupgrade并在卸载时保留动态生成的文件

时间:2016-11-21 17:20:47

标签: c# wix windows-installer

我在这里有两个问题,我无法解决问题

第一个:我有动态生成的数据库文件,我想继续卸载。 第二种:在升级时,根本不会替换任何文件。

我为新升级做了什么:只需将发布版本从1.0.1升级到1.0.2。

这是我的wix文件:

   
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
<Product Id="*" Name="St Mary Attendnace Mangement" Language="1033" Version="1.0.2" Manufacturer="Shady Atef"
       UpgradeCode="UPGRADECODE">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<PropertyRef Id="NETFRAMEWORK45" />
<Condition
  Message='This setup requires Microsoft .NET Framework 4.5 package or greater needs to be installed for this installation to continue.'>
  <![CDATA[Installed OR NETFRAMEWORK45]]>
</Condition>
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."
              Schedule="afterInstallExecute" />
<MediaTemplate EmbedCab="yes" />


<Feature Id="ProductFeature" Title="St_Mary_Attendance_Setup" Level="1">
  <ComponentGroupRef Id="C_CommonAssemblies" />

  <ComponentRef Id="ApplicationShortcuts" />

</Feature>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="St Mary Attendnace Mangement" />
  </Directory>
  <Directory Id="ProgramMenuFolder">
    <Directory Id="ProgramMenuSubfolder" Name="St Mary Attendnace Mangement">
      <Component Id="ApplicationShortcuts" Guid="ED28E3D6-5365-48E7-BD76-B3295099CF47">
        <Shortcut Id="ApplicationStartMenuShortcut"
                  Name="St Mary Attendance Mangement-Shortcut"
                  Description="Manage your attendance easily"
                  Target="[#fil54A6944D4CD4C2F739233096DDDBD757]"
                  WorkingDirectory="INSTALLFOLDER" />
        <RemoveFolder Id="ProgramMenuSubfolder" On="uninstall" />
        <RegistryValue Root="HKCU" Key="Software\ShadyAtef\StMaryChurchAttendance" Name="installed" Type="integer"
                       Value="1"
                       KeyPath="yes" />
      </Component>
    </Directory>
  </Directory>
</Directory>

</Product>
</Wix>

注意:C_CommonAssembliesHeat在每次构建时生成。 PS:我知道这个问题在这里重复了很多,我已经阅读了大部分内容,但我找不到有什么问题。

1 个答案:

答案 0 :(得分:1)

如果正在运行的应用程序生成文件,则在卸载时不会自动删除这些文件,如果卸载Office,则会删除所有Word文档。如果你确实安装了一个数据库(然后填充它),那么它是卸载时删除的候选者。

您的主要升级是在InstallExecute之后,即升级过程结束时。这意味着新产品将安装在现有产品(和文件)之上,这意味着文件覆盖规则适用,修改后的数据文件不会被覆盖:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370531(v=vs.85).aspx

升级必须与之前的产品具有相同的UpgradeCode - 它是否相同或不相同。