我有一个winform的程序A,有一个setup的打包安装程序,都可用。后来需求变化,setup打包安装程序无法满足安装时的需求,于是在A里添加了安装类MyInstaller,代码如下:
[RunInstaller(true)] public partial class MyInstaller : System.Configuration.Install.Installer { public MiInstaller() : base() { //InitializeComponent(); // Attach the 'Committed' event. this.Committed += new InstallEventHandler(MyInstaller_Committed); // Attach the 'Committing' event. this.Committing += new InstallEventHandler(MyInstaller_Committing); } // Event handler for 'Committing' event. private void MyInstaller_Committing(object sender, InstallEventArgs e) { //Console.WriteLine(""); //Console.WriteLine("Committing Event occured."); //Console.WriteLine(""); MessageBox.Show("Committing Event occured."); } // Event handler for 'Committed' event. private void MyInstaller_Committed(object sender, InstallEventArgs e) { //Console.WriteLine(""); //Console.WriteLine("Committed Event occured."); //Console.WriteLine(""); MessageBox.Show("Committed Event occured."); } // Override the 'Install' method. public override void Install(IDictionary savedState) { base.Install(savedState); string productName = Context.Parameters["ProductName"].Trim(); string whateveryouwant = Context.Parameters["whateveryouwant"].Trim(); } // Override the 'Commit' method. public override void Commit(IDictionary savedState) { base.Commit(savedState); } // Override the 'Rollback' method. public override void Rollback(IDictionary savedState) { base.Rollback(savedState); } //public static void Main() //{ // //Console.WriteLine("Usage : installutil.exe Installer.exe "); // MessageBox.Show("Usage : installutil.exe Installer.exe."); //} private void MiInstaller_BeforeInstall(object sender, InstallEventArgs e) { MessageBox.Show("MiInstaller_BeforeInstall"); } }
但是生成出msi安装包之后,在安装的时候不执行里面的函数,一个也没执行。后来google,说是需要添加一个library,把myinstaller弄到library里,在setup打包程序里添加--项目输出--设置library的项目输出,然后在安装那里设置选择libary的主输出,但是build出msi之后,安装依然执行不到myinstaller,这是为什么呢?
就这么多分了,多谢帮忙!
你别新建类,你在原有的类中写这些代码
大侠,没明白,原有的类是指什么类?
@mrhyher: 就是打包项目中的那个类
@刘宏玺: 我才看到,你的类是写在A里了,A项目又不是打包程序,怎么可能有作用呢?
@刘宏玺: 我的打包程序是创建的:其他项目类型--安装和部署--visual studio installer,创建好之后里面没有类,只有三个如下图的文件目录操作。
@刘宏玺: 是我建错了吗?
@mrhyher: 用这个打包项目就不能自定义了,你看下这个
http://blog.csdn.net/swarb/article/details/7074647