Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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
Installation WIX安装程序安装在多个位置,然后进行修补_Installation_Wix - Fatal编程技术网

Installation WIX安装程序安装在多个位置,然后进行修补

Installation WIX安装程序安装在多个位置,然后进行修补,installation,wix,Installation,Wix,首先让我说,如果这对某人来说没有意义,请让我知道 这是我的场景。。。我相信它应该是简单的。假设我有一个场景,我的安装程序安装到: Program Files/MyProduct/Development 此外,我还希望将相同的安装程序安装到: Program Files/MyProduct/Test WIX能做到这一点吗 此外,如果是这样的话,我该如何修补每一个实例呢?您正在尝试的是所谓的多实例安装程序。我在InstallShield中做了很多,而不是在WiX中,在主要/次要升级中,而不是在补

首先让我说,如果这对某人来说没有意义,请让我知道

这是我的场景。。。我相信它应该是简单的。假设我有一个场景,我的安装程序安装到:

Program Files/MyProduct/Development
此外,我还希望将相同的安装程序安装到:

Program Files/MyProduct/Test
WIX能做到这一点吗


此外,如果是这样的话,我该如何修补每一个实例呢?

您正在尝试的是所谓的多实例安装程序。我在InstallShield中做了很多,而不是在WiX中,在主要/次要升级中,而不是在补丁中。Yan在WiX方面做得更多,包括写一些博客文章

但请注意,这并不简单。:-)


通常,
INSTALLDIR
INSTALLLOCATION
是一个公共属性,您可以通过命令行或bootstapper进行设置。例如:

msiexec /i setup.msi INSTALLDIR="C:\Program Files\MyProduct\Test"

下面应该允许您并行安装,我建议您非常小心使用这种方法,并且只应将其用于开发目的

<?xml version="1.0" encoding="UTF-8"?>

<?if $(var.MyApplication.Configuration) = Debug ?>
<?define UpgradeCode = "<INSERT-DEVELOPMENT-GUID-HERE>" ?>
<?else ?>
<?define UpgradeCode = "<INSERT-RELEASE-GUID-HERE>" ?>
<?endif ?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*"  Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="SetupProject1" UpgradeCode="$(var.UpgradeCode)">

这种方法使用被引用项目的配置,因此要使其工作,您必须引用了一个项目(如上所示为MyApplication)。这将在编译以进行调试时使用不同的升级代码创建安装程序


然后需要按照@KMoraz所描述的方式进行部署

嘿,谢谢你的回复!所以看起来为了做到这一点,我必须根据安装的数量对产品ID进行硬编码?我不会预先知道这些信息,因为用户可能会在不同的目录中安装X个拷贝。有意义吗?明白了。实际情况是,您在X代之前就已经有了大量的实例转换,并假设它足以满足99%的用户,或者您提出了一个更复杂的boostrapper(EXE)故事,即在运行时生成+1转换。这是可以做到的,但基础设施要高得多,而且我还没有遇到过对第一个故事不满意的人。例如,即使是SQL server也将每台机器的实例数限制为50个。您是否会编写(可能使用C#/WinForms)某种包装器,允许最终用户轻松安装多个实例?我不认为最终用户需要了解转换等。有什么想法吗?