最近自己用wpf写了一个安装包,本以为这样就OK了,可是人家提出,要集成 .net framework 4.0,问题来了,wpf是基于.net framework 4.0,没有.net framework 4.0怎么运行,

苦苦研究几天,都没什么结果,有的人说用C++写一个,我觉得比较靠谱,可惜C++我只是学了点皮毛,还没深入,还有用什么飞信框架的,Mono的感觉都不太靠谱,最后突然自己想出了一个办法,用vs安装做个外壳,把我的安装程序包装在里面,这样,没有.net framework的,他会自动提示安装.net framework,然后再自动运行我的安装程序,最后我的步骤如下

建立一个安装项目

1.把安装文件放入应用程序文件夹

2.右击-视图-安装界面 把里面的子界面全部删除

3.右击-添加-项目输出(项目看下面的解释,主要用于自动启动自己做的安装包)

4.右击-自定义操作-安装-添加自定义操作-选择你添加到项目输出的那个项目

5.右击-属性-系统必备-从与我的应用程序想通位置下载系统必备组件

这样安装项目就配置好了

接下添加上面说的项目,用于安装好 .net framework后自动启动我自己做的安装包

1.建个类库项目

2.右击项目-添加新项-安装文件类

3.在类中贴入以下代码

/// <summary>
/// 功能是做安装项目主项目输出
/// 实现安装过程中的一些操作
/// 如:安装完成后启动项目
/// </summary>
[RunInstaller(true)]
public partial class Installe : Installer
{
/// <summary>
/// 应用程序入口
/// </summary>
public static void Main()
{
}
/// <summary>
/// 构造函数
/// </summary>
public Installe()
{
InitializeComponent();
}
/// <summary>
/// 重写安装完成后函数
/// 实现安装完成后自动启动已安装的程序
/// </summary>
/// <param name="savedState"></param>
protected override void OnAfterInstall(IDictionary savedState)
{

try
{
base.OnAfterInstall(savedState);

Assembly asm = Assembly.GetExecutingAssembly();
string path = asm.Location.Remove(asm.Location.LastIndexOf("\\")) + "\\";
System.Diagnostics.Process.Start(path + "\\a.exe");//要执行的程序
}
catch (Exception)
{

}
}
/// <summary>
/// 重写安装过程方法
/// </summary>
/// <param name="stateSaver"></param>
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
/// <summary>
/// 重写安装之前方法
/// </summary>
/// <param name="savedState"></param>
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
}
/// <summary>
/// 重写卸载方法
/// </summary>
/// <param name="savedState"></param>
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
/// <summary>
/// 重写回滚方法
/// </summary>
/// <param name="savedState"></param>
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
}
}

编译成功后,用上面安装包说的,添加到安装包的项目输出,就OK了。这样安装程序只会安装。net 然后运行我自己的安装程序,嘿嘿

但是这样安装程序,他的外壳也被安装在计算机了,不过没事,在你自己的程序卸载的时候,同时把这个外壳程序卸载掉就好了,代码如下

Process.Start("msiexec", "/uninstall {9FDBD1ED-9792-4FD4-9963-52E5974F05A4} /quiet");

注意:{}里面的是你外壳程序的产品编号,/quiet是静默卸载的意思,如果去掉,他会提示你是否要卸载此产品

这东西看简单,其实真的还是用了很多自己的时间,转载的童鞋,记得保留我的连接http://www.cnblogs.com/linyijia/archive/2013/03/06/2945468.html,不做纯粹的伸手党哦!

自制安装包集成.net framework 4.0相关推荐

  1. oracle数据库7个安装包,Oracle 11gR2(11.2.0.4)安装包(7个)作用说明

    在之前使用Oracle10G的时候,官网下载的数据库安装包只有两个文件,解压合并后为完整的安装包. 后来因为检查出多个Oracle漏洞,需要现场Oracle数据库版本需要升级到11.2.0.4,下载的 ...

  2. lnmp一键安装包linux,linux centos7.3 lnmp一键安装包集成

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? linux centos7.3 lnmp一键安装包集成 一.下载并安装LNMP一键安装包 安装LNMP稳定版wget - ...

  3. cygwin-1.7 离线安装包_.NET Framework所有版本微软官方下载地址

    许多应用程序的运行需要依赖Microsoft .NET Framework,而发展到今天,.NET Framework的版本已有很多,从新到旧包括: .NET Framework 4.8 .NET F ...

  4. INFO:InstallShield工程中如何将安装包集成的Prerequisites安装文件压缩到一个Setup.exe中...

    InstallShield工程中,我们有时会集成第三方安装包,通过Prerequisites的方式安装. 如果安装包需要压缩成一个Setup.exe,其他内容项如果按照默认设置,结果将如下图: 会出现 ...

  5. 安装包制作工具Install_Pack 3.0正式版(WPF全代码)

    这是一个完整安装包制作软件,全部源码,无DLL的坑. 制作的安装包,生成为WPF的exe文件.制作只需选择需打包的文件夹以及启动方式(注册表开机启动.通过服务开机启动).建立快捷方式(可选桌面.开始菜 ...

  6. python3.7安装包百度云_Python-3.7.0软件安装包以及安装教程

    Python-3.7.0(32/64位)软件下载地址 链接:https://pan.baidu.com/s/1rieTbQX2I1jr_F932XHRDQ 密码:o3yj 安装步骤: 1.鼠标右击软件 ...

  7. jmeter安装包双击没反应_Jmeter5.0源码在eclipse运行的正确打开方式

    每周一三07:22,准时为你充电 用jmeter也已经有3.4年的时间了,虽然也做过一些简单的扩展,但是一直没有勇气去看源码.作为一个社区活跃,目前使用广泛的工具,自然有他的独到之处,所以最近打算看看 ...

  8. Linux部署禅道在访问web页面进入www时报错:mysql无法连接(重新解压安装包或者输入命令:setenforce 0即可)

    解决办法: linux中输入命令:setenforce 0 (临时关闭linux的selinuxp配置防火墙)即可. 另:临时开启:setenforce 1 如果想要永久关闭: vi /etc/sys ...

  9. 华为鸿蒙os手机版,华为鸿蒙os2.0系统正式版安装包下载-华为鸿蒙2.0系统手机版v2.0安卓版_289手游网下载...

    华为鸿蒙2.0系统手机版是由华为最新推出的系统,这款系统比之前的系统的更加稳定,对系统进行了深度优化,同时功能也变得更加全面了,给用户带来全新的体验方式,给用户最优质的服务,现在就赶紧来更新吧,感兴趣 ...

最新文章

  1. [工具向]__androidstudio签名打包apk及配置自动签名
  2. 数据库系统概论:第三章 关系数据库标准语言SQL
  3. MFC 实现字符串的移动
  4. 唐岩自述奋斗史:从娄底青年到陌陌上市
  5. ICPC-无限路之城
  6. boost::math模块使用正态分布的示例
  7. Java Enum 枚举
  8. 缓存层设计套路(一)
  9. git常用操作,切换分支,合并分支
  10. C++——如何理解.h文件和.cpp文件
  11. 在ASP.NET的复合组件中实现冒泡处理机制
  12. 20155201 2016-2017-2 《Java程序设计》第五周学习总结
  13. 在esp32开发板上实现的web_radio,基于wm8978 codec芯片
  14. Python实现英文词频统计:以hamlet为例
  15. 圣诞节礼物送什么有新意?高颜值蓝牙耳机可表心意
  16. 吴式太极大师战波简介
  17. 质量团队在VUCA时代如何走?
  18. tableau可视化图表及仪表板设计
  19. 简述网桥的特点_网桥的工作原理和特点是什么呢?
  20. 大天使之剑武器都在哪掉落?

热门文章

  1. 若依实现文件多线程批量上传案例
  2. PDF 与 Word互转工具。 在线的 和安装软件
  3. Teamcenter 入门开发系列问答(2)
  4. ecshop php5.5分类文字不显示,在PHP5.5下ecshop修正文件报错归类
  5. javax maven项目缺少_教育平台项目后台管理系统:介绍与搭建
  6. mysql无法连接10061_Day062 连接数据库异常问题记录
  7. Python中的pip包管理工具被删除重新进行安装
  8. mysql存储过程中in条件多个值,使用临时表解决
  9. JAVA程序员必看的15本书
  10. 蓝宝石显卡bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...