1

我有一个默认安装目录:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFiles64Folder">
    <Directory Id="INSTALLFOLDER" Name="$(var.Manufacturer) $(var.ProductName)"></Directory>
  </Directory>
</Directory>

在安装过程中,我允许用户更改目录。如果用户在重大升级期间确实更改了目录,我是否必须手动检索目录并INSTALLFOLDER使用实际路径进行设置,或者有没有办法以某种方式自动检测它?

4

1 回答 1

0

Windows Installer 不直接支持此功能;我认为您正在寻找“记住属性”模式。策略是:

  1. 在初始安装时,将 的值保存INSTALLFOLDER到已知位置的注册表中。
  2. 开始升级时,从注册表中检索值并使用它。

创作看起来像这样:

<!-- Retrieve the property from the registry during AppSearch -->
<Property Id='REMEMBERME'>
  <RegistrySearch Id='RememberProperty'
                Root='HKCU'
                 Key='SOFTWARE\My Company\My App'
                Name='Remembered'
                Type='raw' />
</Property>

<!-- Save the value in the registry for future upgrades -->
<Component Directory='INSTALLFOLDER'>
    <RegistryValue Root='HKCU'
                    Key='SOFTWARE\My Company\My App'
                   Name='Remembered'
                  Value='[REMEMBERME]'
                   Type='string' />
</Component>

Rob Mensching 的博客文章更详细地描述了这一点。

于 2013-09-11T06:23:44.623 回答