代码之家  ›  专栏  ›  技术社区  ›  BiggPlanet

WiX Installer-在UAC提示后,LocalAppDataFolder的子项安装到错误的位置

  •  1
  • BiggPlanet  · 技术社区  · 8 年前

    全新的WiX,我正试图修复我最近接管的一些软件中的一个bug。作为产品定义的一部分,我们将某些文件安装到用户的“AppData\Local”目录中。当用户具有安装权限时,当前项目安装程序工作正常,文件被放置在预期的用户“AppData\Local”目录中。

    但是,如果UAC提示弹出时需要管理员凭据,则文件最终将安装在管理员帐户的“AppData\Local”目录中。

    在产品文件中,我们有如下内容:

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="LocalAppDataFolder">
        <Directory Id="MyData" Name="My Data">
          ...
        </Directory>
      </Directory>
    </Directory>
    

    然后在heat.exe生成的文件中

    <Fragment>
      <DirectoryRef Id="MyData">
        <Directory Id="UserMaps" Name="User Maps" />
      </DirectoryRef>
    </Fragment>
    <Fragment>
      <ComponentGroup Id="User_Maps_Components">
        <Component Id="Map1.png" Directory="UserMaps" Guid="{C27...autogenerated}">
          <File Id="Map1.png" Source="$(var.MapPath)\Map1.png" KeyPath="no" />
          <RegistryValue KeyPath="yes" Root="HKCU" Key="Software\MyApp\Usermaps" Type="integer" Value="1" Name="Map1.png" />
        </Component>
      </ComponentGroup>
    </Fragment>
    

    有没有办法确保文件将被安装到启动用户的目录,而不是管理员的帐户?

    我们也将文件安装到“程序文件”中,因此如果在活动用户的文件夹中找不到文件,我可以始终在那里安装文件并将其作为应用程序初始化逻辑的一部分进行复制,但我有兴趣查看是否存在特定于WiX的操作方式。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Stein Åsmul    8 年前

    我假设您实际上是在输入一个管理员密码并指定一个管理员帐户来运行安装程序?这与提升您登录的管理帐户相反。后者应该将文件安装到预期的文件夹中。 The former would install like you describe .

    我将采用您描述的方法:从每台机器上安装的副本将文件复制到每个用户配置文件。 I wrote up some suggestions for user profile and HKCU deployment a while back . 只是对这个问题的一些想法-这个问题似乎没有什么好的答案。Windows 10显然不再支持活动安装方法。


    加入一些链接:

    推荐文章