2010-08-09 80 views
1

我是新来的.net,并有这个问题:我想为使用AVI包装描述here应用程序的安装程序。该库取决于avifil32.dll,因为我在源代码中发现它包含制作一个依赖于avifil32.dll的.net应用程序的安装程序?

[DllImport("avifil32.dll", PreserveSig=true)]

我已经在visual studio 2008中创建了安装项目,安装程序在某些机器上工作正常。但是,有一台机器无法正常工作,并且在与.avi导出有关的部分完全中断,所以我认为原因与此外部依赖关系有关。 如何让安装程序在目标机器上缺少这个(或通常任何)外部dll?

回答

1

感谢TooFat的建议。它帮助我意识到,我以前猜测关于丢失avifil32.dll是错误的。

我的问题的实际原因是我使用aviwrapper库将位图导出到avi和mpeg(我稍微修改了库以便能够在常规和xvid编解码器之间切换)。它在我的台式电脑和笔记本电脑上工作,因为那里我已经安装了xvid编解码器,但是在干净的Windows XP虚拟机上它不工作(xvid编解码器丢失)。 我通过查看日志文件意识到这一点。实际发生的事情是,我的方法先试图导出为.mpg,然后在avi compress中收到异常(由于xvid)。之后,它会尝试导出到.avi,但是此前的尝试搞砸了某些东西,导出到.avi会在文件打开时引发异常(两个导出都使用相同的临时文件名,这就是为什么它在文件打开时抛出异常的原因)。

当我注释掉.mpg导出一切正常,我没有必须包括上述dll。

再次感谢您的回复。

1

你可以在安装项目中右键单击主输出,然后右键单击应用程序文件夹,选择添加程序集并浏览到你的dll?

如果您然后右键单击程序集,您可能需要设置注册设置以在安装时注册该dll。

以下是可能有所帮助的article

+0

我无法将其作为参考添加它说它不是一个有效的assemply或COM DLL,但我可以在安装项目中添加。我会尽力回复 – draganstankovic 2010-08-09 15:01:11

相关问题