Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.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安装程序的自定义操作dll-s是否必须仅使用Visual Studio创建?_C++_Windows Installer_Custom Action - Fatal编程技术网

C++ msi安装程序的自定义操作dll-s是否必须仅使用Visual Studio创建?

C++ msi安装程序的自定义操作dll-s是否必须仅使用Visual Studio创建?,c++,windows-installer,custom-action,C++,Windows Installer,Custom Action,我已经用VisualStudio创建了安装项目。我还需要一些自定义动作-创建的DLL与Visual C++ +,它工作正常,但我不想包括VisualC++运行时文件到我的项目。 那么,有可能用其他C++编译器构建这个DLL吗? 我曾尝试使用Dev-c++实现这一点,但在编译时,我从文件msi.h和msiquery.h中得到几百个编译错误。可能最简单的解决方案是将DLL与静态运行库链接起来。一般来说,自定义操作DLL应该只依赖于安装之前系统中已经存在的DLL。例如,这意味着静态链接CRT(如MSa

我已经用VisualStudio创建了安装项目。我还需要一些自定义动作-创建的DLL与Visual C++ +,它工作正常,但我不想包括VisualC++运行时文件到我的项目。 那么,有可能用其他C++编译器构建这个DLL吗?
我曾尝试使用Dev-c++实现这一点,但在编译时,我从文件msi.h和msiquery.h中得到几百个编译错误。可能最简单的解决方案是将DLL与静态运行库链接起来。

一般来说,自定义操作DLL应该只依赖于安装之前系统中已经存在的DLL。例如,这意味着静态链接CRT(如MSalters所述),但也适用于对第三方库的任何其他依赖


另一个选择是与OS CRT链接,正如Koby Kahane解释的那样。

我为我的安装项目制作了一个自定义dll。我的dll非常简单,注册的服务很少,不依赖CLR或任何第三方库。仅与msi.lib静态链接

我已从安装项目中删除了.net和windows installer的先决条件要求。我的安装在没有.net framework的macines上失败

由于我没有任何与.net相关的代码,因此解决这个问题的方法应该是什么。我不知道;我不希望用户先下载框架进行安装

问候
Amit

这里,您可以找到一些用于自定义动作的C++ DLL的简短示例: