从自定义操作设置属性?

问题描述

我是 wix 的新手,正在尝试执行以下操作:
我正在将我们当前的 MSI 从安装到程序文件(每台机器)转换为安装在本地应用程序数据中(每用户)。
但是,由于这个 MSI 也可以部署到整个组织,并且由于这个部署可以在系统会话中运行,我需要在安装过程中找出控制台会话的本地应用程序数据路径,因为我不想要我们的应用程序安装在系统会话的本地应用数据目录中。

我知道通常的解决方案是安排 MSI 在“标准”用户下次登录时安装,但我收到的要求指示我安装 MSI 并在此后同时运行应用程序,无需登录/off,重启等

所以,我想要做的是运行一个即时自定义操作,该操作将运行我将创建的另一个 exe,该 exe 将返回控制台会话的本地应用程序数据目录的路径,并在安装程序,通过将此值存储在属性中。

到目前为止我读到的:

  1. 我无法从自定义操作中获得返回值。
  2. 我需要做的是编译 ac# dll(我主要用 c# 编程),我将在其中定义一个自定义操作,该操作将包含获取控制台会话的本地应用程序数据目录的逻辑,一旦我有了将此路径存储在 WXS 文件中定义的属性中。

我理解正确吗?
有没有不同的方法来完成我的需要?
有什么提示/技巧/文章/例子可以复习吗?

谢谢

解决方法

有一种标准方法可以实现每用户/每台机器的安装。您可以只使用 WixUI_Advanced 模板,即 <UIRef Id="WixUI_Advanced" />。它提供了开箱即用的功能。看看官方文档:

https://wixtoolset.org//documentation/manual/v3/wixui/dialog_reference/wixui_advanced.html