问题1:怎样使得在控制面板中,添加删除程序中的程序图标显示我的程序的图标,现在它只是显示Windows默认的应用程序图片,请问怎么它这个地方的图标修改成像其他程序一样,显示自己的图标?问题2:因为在卸载时需要左一些其他操作,所以我为程序写了一个卸载程序,但如果是通过控制面板中,添加删除程序中卸载时,是不会调用我写的那个卸载程序,而是调用了系统本身的卸载程序,导致我需要的操作没有被执行,请问怎样在添加删除程序中卸载时,调用我写的卸载程序呢?

解决方案 »

  1.   

    问题1:
    在安装项目属性里设置AddRemoveProgramsIcon。
    具体见http://msdn.microsoft.com/zh-cn/library/syyw4edd(v=vs.80).aspx问题2:
    恰当的方法还是用‘系统’本身的卸载程序,它不仅卸载文件等等,还作其他很多事情包括卸载安装数据记录等等。如果你“卸载时需要左一些其他操作”,那么应该用自定义操作(CustomAction),而不是另外写一个卸载程序。
      

  2.   

    非常感谢gomoku,给了我一个很明确的方向。其实我写的卸载程序只是在卸载想之前一些简单的操作后,最后是调用msiexec.exe程序卸载的,这个应该和‘系统’本身的卸载程序所处理的卸载安装数据记录一致吧?还有一个问题是,如果我在自定义卸载操作中,添加了我需要的操作了,在‘添加删除程序’中就可以实现了,但这个软件还是希望需要有一个自己的卸载程序,但如果只用自己的卸载程序是,又怎样调用这个‘系统’本身的卸载程序呢?
      

  3.   

    我的意思是,自定义系统APR(Add Remove Program - 添加删除程序)里面的卸载方式不科学(虽然可以通过自定义ARPSYSTEMCOMPONENT以及UninstallString来做)。但是添加一个卸载程序快捷方式却很简单:http://msdn.microsoft.com/zh-cn/library/kz0ke5xt(v=VS.80).aspx
      

  4.   

    你的意思不是说,可以为安装项目自定义操作中的卸载中添加一个自定义操作吗?这样就可以使用系统的卸载程序之余,还有可以添加自己的操作。而我的希望是,如果我添加了自定义操作后,在添加卸载程序中卸载我的软件是没有问题了,但这个软件需要一个卸载的快捷方式,方便用户在开始-程序中卸载,那么,怎样使得这个在开始-程序中的快捷方式和添加卸载程序中运行卸载时的保持同一样的调用呢?你说的通过UninstallString来调用我写的卸载程序我也有想过,但是这个值,可不可以直接设置安装项目来指定呢?还是需要安装后手动更改注册表呢?