我想创建一个安装程序包来安装免注册的COM组件(包含清单文件)。这或多或少是一个自解压存档,可以将一些文件放在作为命令行参数给出的目标目录中,但它还需要检查或安装一些其他可再发行组件,如VC ++或DirectX。
该软件包应该在另一个应用程序的安装程序中用作某种可再发行软件包本身。它不应该在Windows的“程序和功能”对话框中注册,但必须随应用程序一起删除。理想情况下,Windows注册表不应该有任何更改。
到目前为止,我还没有成功。任何人都可以提供一些有关此用例的提示吗?
答案 0 :(得分:1)
在这一个问题中你有十几个不同的问题。首先创建一个简单的MSI,成功安装您的文件和清单。创建一个COM客户端来测试它。您还可以在MSI中放置AppSearch和LaunchConditions来检测您的依赖项,如果它们丢失则不允许安装。
这就是你应该为这个简单的问题做的所有事情。至于其他问题......如果你是可再发行的而且其他人默默地安装你,那么他们的工作就是处理其他可再发行组件的安装。此外,如果他们不希望您在“程序和功能”中列出,他们可以将ARPSYSTEMCOMPONENT = 1传递给您的安装程序,您将不会被列出。如果他们想要在卸载时卸载你,那就不是你的问题。
答案 1 :(得分:0)
如果您确实创建了可供其他产品使用的可再发行组件,则有时合并模块是合适的解决方案。他们构建他们的MSI文件并包含您的合并模块。
否则,免注册COM在理论上是一个简单的安装,因为您只是安装清单文件和Dll等。但是我不明白其他应用程序如何使用它,因为(IIRC)a客户端应用程序exe需要您的清单和Dll在他们的安装文件夹中,那么他们如何在尚未安装时执行此操作?或者即使安装了它们,你怎么能找到它们?所以这又回到了合并模块的想法,所以他们包含你的合并模块,并在同一个位置安装一个exe,你的清单和你的Dll。当他们卸载时,你的文件。