需要继承Installer类,然后重写Install方法
具体步骤继承 Installer 类。重写 Install、Commit、Rollback 和 Uninstall 方法。向派生类添加 RunInstallerAttribute,并将其设置为 true。将派生类放置在带有要安装的应用程序的程序集内。调用安装程序。例如,使用 InstallUtil.exe 调用安装程序。Installers 属性包含安装程序的集合。如果 Installer 的此实例是安装程序集合的一部分,则 Parent 属性设置为包含该集合的 Installer 实例。有关 Installers 集合用法的示例,请参见 AssemblyInstaller 类。Installer 类的 Install、Commit、Rollback 和 Uninstall 方法遍历存储在 Installers 属性中的安装程序的集合,并调用每个安装程序的相应方法。Install、Commit、Rollback 和 Uninstall 方法并非总是在同一 Installer 实例上调用。例如,在安装和提交应用程序时可能使用一个 Installer 实例,然后释放对该实例的引用。以后卸载应用程序时将创建对新的 Installer 实例的引用,这意味着由 Installer 的另一个实例调用 Uninstall 方法。因此,在派生类中,不要在安装程序中保存计算机的状态。而请使用 IDictionary,它可跨调用保留并传递给 Install、Commit、Rollback 和 Uninstall 方法。两种情况可以阐释在状态保护程序 IDictionary 中保存信息的必要性。第一种情况,假定安装程序设置了注册表项。它应在 IDictionary 中保存该项的原始值。如果安装被回滚,则可以还原原始值。第二种情况,假定安装程序替换现有文件。将现有文件保存在临时目录中,并将该文件的新位置的位置保存在 IDictionary 中。如果安装被回滚,则删除新文件并将其替换为临时位置中的原始文件。Installer.Context 属性包含关于安装的信息。例如,关于安装日志文件位置的信息,Uninstall 方法所要求的保存文件的位置的信息,以及运行安装可执行文件时输入的命令行。

解决方案 »

  1.   

    以前用过,感觉自已写脚本很复杂.
    楼主可以考虑将执行的SQL放在你的应用程序中,第一次运行时对数据库进行初始化.这样可以在自已熟悉的领域解决问题.
      

  2.   

    http://www.codeproject.com/showcase/Redgate_Exia.asp
      

  3.   

    在installshield11.5中有一个Server Configuration用来设置IIS和数据库的,直接把sql语句添加进去就行了,也可以用Database Import Wizard另一个方法是用 LaunchAppAndWait("osql.exe","/E /S 机器名\实例名 /i xxx.sql")
    请参见osql.exe