在 WiXSharp 中创建动态安装目录
Creating a dynamic install directory in WiXSharp
我的目录有问题,我希望我的 InstallDir 成为我的顶级父目录,并且任何其他 Dir 都包含在此文件夹结构中。我已经尝试了多种方法,但似乎无法解决,但我的目标是能够使用 installDirDialog 更改安装位置。保持不变的目录可以正确安装,但如果我要更改安装位置,它只会构建新的文件夹结构并将文件安装到默认位置。我知道为什么它安装到这个位置,因为它引用了一个静态字符串,我只使用下面的例子来简化我遇到的问题。
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 作为路径。
在浪费了无数个小时之后,解决方案实际上非常简单,Wixsharp 的好心人向我解释清楚了。
只需移动 instalDir 的结束括号即可包含任何子目录及其文件。
new InstallDir(dirs,
new Dir("DataAPI",
new Files(@"E:\Temp\installertemp\DataAPI\*.*")));
我的目录有问题,我希望我的 InstallDir 成为我的顶级父目录,并且任何其他 Dir 都包含在此文件夹结构中。我已经尝试了多种方法,但似乎无法解决,但我的目标是能够使用 installDirDialog 更改安装位置。保持不变的目录可以正确安装,但如果我要更改安装位置,它只会构建新的文件夹结构并将文件安装到默认位置。我知道为什么它安装到这个位置,因为它引用了一个静态字符串,我只使用下面的例子来简化我遇到的问题。
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 作为路径。
在浪费了无数个小时之后,解决方案实际上非常简单,Wixsharp 的好心人向我解释清楚了。
只需移动 instalDir 的结束括号即可包含任何子目录及其文件。
new InstallDir(dirs,
new Dir("DataAPI",
new Files(@"E:\Temp\installertemp\DataAPI\*.*")));