通过自定义操作通过MSI安装程序在安装期间安装INF文件

时间:2015-10-23 15:29:28

标签: visual-studio-2015 setup-project custom-action inf

我有一个visual studio setupproject来安装我的内核驱动程序"mydriver"。当我右键单击并安装我的驱动程序时,它将从inf文件进行安装。

现在我想从自定义操作中执行类似的操作。在安装项目中使用标准操作,我想将.inf.sys文件加载到C:\Program Files\Myfolder

在同一个安装程序项目中,我在自定义操作编辑器的“安装”部分中添加了"InfDefaultinstall.exe"作为自定义操作。在自定义操作的arguments属性中,我将文件添加为"C:\Program Files\Myfolder\mydriver.inf"

项目已成功构建,当我尝试使用"setup.exe"安装软件包时,出现错误

  

"系统无法找到指定的文件"

有人可以就这个问题给我一个建议吗?

2 个答案:

答案 0 :(得分:0)

我在MSDN论坛上的回答:

我不知道您是如何指定Program Files文件夹的,但您不应该对其进行硬编码 - 您应该使用Application Folder名称中的ProgramFilesFolder属性。

您还需要告诉您是要构建32位还是64位设置。 32位x86安装程序无法安装到"C:\Program Files\",因为这是64位程序文件文件夹,安装将重定向到"C:\Program Files(x86)\"。因此,如果您的代码无法找到该文件,那么您可能会遇到这些文件夹的问题。如果它是32位设置,则必须使用x86文件夹。

除此之外,我跳过自定义操作,让安装继续进行,并查看文件的实际位置。

还要确保在自定义操作代码中指定inf文件的完整完整路径。您没有从资源管理器中作为调用运行,您可以在其中获得默认工作目录的便利。

答案 1 :(得分:0)

试一试:

[RunInstaller(true)]
public partial class CustomInstaller : System.Configuration.Install.Installer
{
    public override void Install(System.Collections.IDictionary stateSaver)
    {
        base.Install(stateSaver);
        string path = this.Context.Parameters["targetdir"]; 
        // Do something with path.
    } 
}

Getting Application path during the installation