在WiXSharp中创建动态安装目录

时间:2018-10-25 12:01:20

标签: wix windows-installer wixsharp

我在使用目录时遇到麻烦,我希望我的InstallDir成为我的顶级父目录,并且希望将其他任何Dir包含在此文件夹结构中。我已经尝试了多种方法,但似乎无法解决,但我的目标是能够使用installDirDialog更改安装位置。保留不变的目录可以正确安装,但是如果我要更改安装位置,则它只会构建新的文件夹结构,而文件install将安装到默认位置。我知道为什么将它安装到此位置,因为它引用了静态字符串,我仅以下面的示例为例来简化我遇到的问题。

string dirs = @"%ProgramFiles%\My Company\My Product";
var project = new ManagedProject("MyProduct",
   new InstallDir(dirs),        
   new Dir(dirs + @"\DataAPI",
       new Files(@"E:\Temp\installertemp\DataAPI\*.*"))); 

另一种方法是使用MSI属性并将其设置为安装路径。

public class General
    {
        public static string Product = "PRODUCT";
        public static string InstallLocation = "INSTALLDIRECTORY";
    }

在setup.cs中 string dirs = General.InstallLocation;

然后我在安装对话框中设置此属性。 MsiRuntime.Session[General.InstallLocation] = installDir.Text;

这也不起作用,仅通过INSTALLDIRECTORY作为路径。

1 个答案:

答案 0 :(得分:0)

经过无数小时的浪费,该解决方案实际上非常简单,并且由Wixsharp的同仁对我来说很清楚。

只需移动instalDir的尾括号即可包括所有子Dirs及其文件。

 new InstallDir(dirs,        
   new Dir("DataAPI",
       new Files(@"E:\Temp\installertemp\DataAPI\*.*")));