WiX安装程序:安装到Appdata - 错误ICE38,ICE64和ICE91



我已经把头撞到这个了一段时间,我终于屈服了(经过大量的搜索),并来堆叠溢出寻求帮助。

正如标题所示,我正在尝试创建一个安装程序,该安装程序可以在不需要任何提升权限的情况下执行每用户安装。

但是,以下代码在编译时生成大量 ICE38 和 ICE64 错误以及 ICE91 警告。

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="AppDataFolder">
        <Directory Id="AppRootDirectory" Name="[Manufacturer]">
          <Directory Id="INSTALLFOLDER" Name="[ProductName]" />
        </Directory>
      </Directory>
    </Directory>
    <Feature Id="ProductFeature" Title="ATestProject" Level="1">
      <ComponentGroupRef Id="modules" />
    </Feature>

"模块"是指 heat.exe 生成的 .wxs 文件的内容,其组件安装目录为"INSTALLFOLDER"

互联网上可用的解决方案表明,为了使其工作,对我的 modules.wxs 文件进行了大量编辑,这是不可接受的 - 此发布过程中有超过 1000 个文件,任何无法自动化的东西(在构建时在命令行上完成或使用脚本)都是完全不可能的。

提前感谢!

您可以设置每用户安装,默认情况下,在 Windows 7 及更高版本上,通过执行以下操作安装到 %localappdata%\Programs;

<Property Id="ALLUSERS" Secure="yes" Value="2"/>
<Property Id="MSIINSTALLPERUSER" Secure="yes" Value="1" />
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="AppRootDirectory" Name="Manufacturer">
      <Directory Id="INSTALLFOLDER" Name="ProductName" />
    </Directory>
  </Directory>
</Directory>
<!-- ... -->
<!-- ... -->
<Feature Id="ProductFeature" Title="ATestProject" Level="0">
  <ComponentGroupRef Id="modules" />
</Feature>

基本上,在顶部设置这两个属性会将安装程序配置为"每用户"安装,这是 UAC 友好的,不需要提升的权限。有关详细说明,请参阅此处。

另请注意,ProgramFilesFolder 变为 %localAppData%/programs-Microsoft 的默认存储位置,用于每用户应用程序并安装到用户配置文件,而不是 C:\Program Files (x86)\

最新更新