我在使用目录时遇到麻烦,我希望我的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作为路径。
答案 0 :(得分:0)
经过无数小时的浪费,该解决方案实际上非常简单,并且由Wixsharp的同仁对我来说很清楚。
只需移动instalDir的尾括号即可包括所有子Dirs及其文件。
new InstallDir(dirs,
new Dir("DataAPI",
new Files(@"E:\Temp\installertemp\DataAPI\*.*")));