Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 c#安装项目-确保.EXE在MSI之前运行?_C# 4.0_Setup Project - Fatal编程技术网

C# 4.0 c#安装项目-确保.EXE在MSI之前运行?

C# 4.0 c#安装项目-确保.EXE在MSI之前运行?,c#-4.0,setup-project,C# 4.0,Setup Project,我正在使用一个C#setup项目,其中包括一些必备软件。这些预请求似乎只由EXE安装,而不是由MSI安装(EXE和MSI都是在我构建安装项目时创建的。) 我不能总是相信我的用户会麻烦运行EXE而不是MSI,那么有没有办法强制它呢?也许有一些选择: 我的应用程序需要Sql CE 3.5 SP2-有没有办法让MSI安装它,而不是只安装在EXE中 有没有办法让我的MSI在由用户启动而不是由EXE启动时进行检测 我可以让MSI在安装过程中启动EXE安装程序吗 Visual Studio安装项目不支持此

我正在使用一个C#setup项目,其中包括一些必备软件。这些预请求似乎只由EXE安装,而不是由MSI安装(EXE和MSI都是在我构建安装项目时创建的。)

我不能总是相信我的用户会麻烦运行EXE而不是MSI,那么有没有办法强制它呢?也许有一些选择:

  • 我的应用程序需要Sql CE 3.5 SP2-有没有办法让MSI安装它,而不是只安装在EXE中

  • 有没有办法让我的MSI在由用户启动而不是由EXE启动时进行检测

  • 我可以让MSI在安装过程中启动EXE安装程序吗


Visual Studio安装项目不支持此操作。但是,商业设置创作工具提供了多种解决方案:

  • 从MSI安装UI而不是使用EXE处理先决条件
  • 将MSI嵌入EXE,这样您就只有一个安装文件
  • 配置EXE以设置自定义MSI属性并基于该属性创建启动条件;这样,如果EXE未设置属性,MSI将停止

如果您想继续使用Visual Studio,一个解决方案是为Sql CE 3.5 SP2创建启动条件。这样,如果未安装Sql CE 3.5 SP2,安装将停止。

setup.exe仅用于确保目标计算机具有正确版本的MSI。真正的问题是什么?如果用户运行setup.msi,将不会安装SQL CE。如果用户运行setup.exe,则将安装SQL CE。我无法阻止用户忽略EXE并只运行MSI。这就是问题所在。