Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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
C# 如何在父msi下运行一个.msi,它会抛出错误“;另一个安装正在进行中……”;_C#_.net_Windows Installer - Fatal编程技术网

C# 如何在父msi下运行一个.msi,它会抛出错误“;另一个安装正在进行中……”;

C# 如何在父msi下运行一个.msi,它会抛出错误“;另一个安装正在进行中……”;,c#,.net,windows-installer,C#,.net,Windows Installer,我已经创建了自定义操作dll文件,其中嵌入的资源为SQL Server Compact Edition msi…此dll在安装项目中被指定为自定义操作..但是当我运行安装程序msi时,它将抛出错误,表示另一个安装正在进行中。。。我在代码中尝试了process.waitforExit(3000)选项,但仍然找不到解决方案? 请回复基本上有两种方式包含对安装的依赖性。通过在msi文件之前运行的引导程序或作为合并模块运行。由于这是Microsoft产品,我怀疑它是否可以作为合并模块使用 换句话说,您可

我已经创建了自定义操作dll文件,其中嵌入的资源为SQL Server Compact Edition msi…此dll在安装项目中被指定为自定义操作..但是当我运行安装程序msi时,它将抛出错误,表示另一个安装正在进行中。。。我在代码中尝试了process.waitforExit(3000)选项,但仍然找不到解决方案?
请回复

基本上有两种方式包含对安装的依赖性。通过在msi文件之前运行的引导程序或作为合并模块运行。由于这是Microsoft产品,我怀疑它是否可以作为合并模块使用


换句话说,您可能应该在应用程序中使用引导程序。请尝试另一个选项,尽管它是在MSI 4.5之前才引入的,并且需要目标系统安装MSI 4.5或更高版本。目前,只有Windows 7具有本机支持,但较旧版本的Windows有4.5可再发行版本。最后,请注意,使用4.5可再发行版本更新MSI通常需要重新启动。

您需要支持静默安装吗?我记得您的安装程序在进入执行序列之前不会获得安装程序服务的锁。这意味着您可以在UI序列中的某个位置启动SQL Server安装。

MSI强制执行两个互斥锁。1) 每台机器一个执行序列和2)每个进程一个UI序列。虽然从技术上讲,忽略最佳实践并从第一个用户界面调用第二个MSI是可能的,但您将失去进行静默安装的能力,并且有一天一些糟糕的客户会感到失望

要么投资于bootstrapper/chainer,要么另一种可能性是SQL Server Compact edition非常小,它们还支持私有部署模型,您只需在应用程序目录中部署程序集。这种方法的问题是,如果Microsoft对这些程序集进行了安全更新,它们将无法为其提供服务。您必须重新构建和部署产品