Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在wix sharp中提供运行时的安装目录位置_Wix_Wixsharp - Fatal编程技术网

在wix sharp中提供运行时的安装目录位置

在wix sharp中提供运行时的安装目录位置,wix,wixsharp,Wix,Wixsharp,我正在使用wix sharp开发我的安装程序,除了在运行时无法提供安装目录位置外,其他一切都正常工作。在安装过程中,我从用户那里获取输入,并将它们作为“InstallFolder”存储在环境变量中,在wix sharp代码中,我从环境变量中获取这些输入 var installLocation = Environment.GetEnvironmentVariable("installLocation", EnvironmentVariableTarget.User);

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

 var installLocation = Environment.GetEnvironmentVariable("installLocation", 
 EnvironmentVariableTarget.User);
 var XYZ_project = new ManagedProject("xyz_Product",
 new Dir(installLocation,new Files(@"xxx\yyy\*.*"))
理想情况下,它应该从env变量获取installation,但在运行时不获取它。如果我在构建安装程序之前设置了这个值,它将接受这个值


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

我看到您正在用户上下文中获取环境变量。您在上下文设置为的情况下尝试过吗?执行实际安装的installExecuteSequence在系统上下文中运行。我猜这可能会为您解决这个问题。

我看到您正在用户上下文中获取环境变量。您在上下文设置为的情况下尝试过吗?执行实际安装的installExecuteSequence在系统上下文中运行。我猜这可能会为您解决这个问题。

要在运行时设置install dir,您可以使用
ManagedProject.Load
事件

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

    project.Load += Project_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);
    }
在安装之前,但在收集所有用户输入之后,将在客户端计算机上调用
项目加载


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

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

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

    project.Load += Project_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);
    }
在安装之前,但在收集所有用户输入之后,将在客户端计算机上调用
项目加载


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

上述代码片段是wix#构建代码的一部分(构建msi时在开发人员计算机上执行)还是安装程序代码的一部分(例如自定义操作),安装期间在客户端计算机上执行?此代码是我的wix#代码的一部分。(构建代码)实际上存储位置的变量是在编译时设置的,但我想在运行时设置。上面的代码片段是wix构建代码(构建msi时在开发人员机器上执行)的一部分还是安装程序代码的一部分(例如自定义操作),安装期间在客户端计算机上执行的代码?此代码是我的wix代码的一部分。(建筑代码)实际上存储位置的变量是在编译时设置的,但我想在运行时设置。我也尝试过,但也不起作用。我也尝试过,但也不起作用。非常感谢您的回答。我从两天开始就在窃听自己,5分钟就搞定了。非常感谢你的回答。我从2天开始就在窃听自己,用这个5分钟就完成了。