微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在运行时以 wix 锐利提供安装目录位置

如何解决在运行时以 wix 锐利提供安装目录位置

我正在使用 wixSharp 开发我的安装程序并且一切正常,除了我无法在运行时提供安装目录位置。在安装时,我从用户那里获取输入并将它们作为“InstallFolder”存储在环境变量中,并在 wix 清晰的代码中我从环境变量中获取它。

 var installLocation = Environment.GetEnvironmentvariable("installLocation",EnvironmentvariableTarget.User);
 var XYZ_project = new ManagedProject("xyz_Product",new Dir(installLocation,new Files(@"xxx\yyy\*.*"))

理想情况下,它应该从 env 变量中获取 instalLocation,但它不会在运行时获取它。如果我在构建安装程序之前设置了这个值,它就会获取这个值。

我需要在运行时从用户那里获取值并设置它们。请对此提出建议。

解决方法

要在运行时设置安装目录,您可以使用 ManagedProject.Load 事件。

在项目声明中设置根目录 ID(示例中的“DIR1”)并订阅 Load 事件。

  var project =
        new ManagedProject("MyProduct",new Dir(new Id("DIR1"),"root1",new File("test.exe")));

    project.Load += Project_Load;

在事件处理程序中设置目录的值

static void Project_Load(SetupEventArgs e)
{
    e.Session["DIR1"] = 
Environment.GetEnvironmentVariable("installLocation",EnvironmentVariableTarget.User);
    }

Project_Load 将在安装之前在客户端机器上调用,但在收集了所有用户输入之后。

请参阅完整示例 here 和有关 wix# 事件 here 的文档。

,

我看到您正在获取用户上下文中的环境变量。您是否尝试过将上下文设置为 Machine or Process?执行实际安装的 installExecuteSequence 在 System 的上下文中运行。我猜这可能会为您解决这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。