日期:2014-05-17  浏览次数:21107 次

InstallShield制作软件安装包:在安装过程中启动一个c#写的程序
************** 异常文本 **************
System.IO.FileNotFoundException: 未能加载文件或程序集“MySqlBackup, Version=1.0.0.0, Culture=neutral, 
PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
文件名:“MySqlBackup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
   在 MySqlBackupDemo.FrmLogin.btnSure_Click(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)

 1:在InstallShild里面进行以下设置

1)添加相应的文件

2)启动外部程序的配置

但出现以下错误:

************** 异常文本 **************
System.IO.FileNotFoundException: 未能加载文件或程序集“MySqlBackup, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
文件名:“MySqlBackup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”
   在 MySqlBackupDemo.FrmLogin.btnSure_Click(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)

 

后来我找到了一款程序集合并的工具 ILMerge(来自微软)

具体操作如下:

1.  下载ILMerge

到http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en下载ILMerge,

才600多K,一下子就下好了.

2~3 :安装ILMerge,步骤略

4.  在安装ILMerge的目录下,就一个ILMerge.exe文件而已,我们等会就是用它打包程序的.

5.为了演示,我重新建了个工程,最后生成的是 MySqlBackupDemo.exe和 MySql.Data.dll文件,

其中newDll是Main.exe 中要引用的Dll文件,为了演示方便,我将它们都复制到了ILMerge的目录下,现在我们就试着用ILMerge将newDll和Main.exe文件打包起来吧.

 

6. 然后进入dos窗口,进入ILMerge目录,然后执行下面代码:

  ILMerge.exe /ndebug /target:winexe /out:newclient.exe MySqlBackupDemo.exe /log MySql.Data.dll

 

7.ILMerge运行时的窗口,此时它正在努力的将MySqlBackupDemo.exe和MySql.Data.dll文件捆绑在一起:

       

  8.DOS窗口关闭后,我们在去ILMerge目录下看看

      此时已经生成好了我们想要的newclient.exe文件,它就是Main.exe和newDll.dll的结合体啦,微笑