zoukankan      html  css  js  c++  java
  • Custom Action : dynamic link library

    工具:VS2010, Installshield 2008

    实现功能:

    创建一个C++ win32 DLL的工程,MSI 工程需要调用这个DLL,并将Basic MSI工程中的两个参数,传递给DLL,

    参数1:Property 表中的 ProductName

    参数2:操作 MSI 工程的 installer database 的 Handle 

    对参数1的操作:通过对话框的方式显示出来。

    对参数2的操作;读取 Property 表中的 ProductName 属性,通过对话框的方式显示出来。

    步骤一、VS2010工程设置:

    1> 创建win32 project , Application Type: DLL

     以 C++ DLL 获取 MSI Property 中的 C-TEST 工程为例。

    步骤二、InstallShield 工程设置:

    1> 创建 Basic MSI 工程。

    用向导创建Custom Action。

    2> Basic Information.

    输入Name(必填项)和 Comment(可选项).

     

    3> Action Type.

    DLL 是 Dynamic Link Library 的缩写,即动态连接库。

     

    4> Function Definition.

     

    Return Property的设置:

    需要事先在Property 表中插入一个属性如CAValue,用来接收返回值,默认设为0。

    这里需要注意的是function’s name 以及Return Type。

    1)这里的Function name 是DLL的输出函数,有可能会和程序中的名称不一致(为什么有的时候会不一致?不详~ 有知道的大虾,帮忙介绍一下)。

    如何查看DLL的出口函数名称?

    右键点击DLL,用Dependency Walker打开,在窗口的右侧列表里会看到出口函数的名称。选中该函数,右键“Copy Functions”,拷贝函数的名称。

    资料参考:DLL详解及Denpendcy Walker的使用

    2) Return value

    设置Return value,用来判断函数调用是否成功。

    在程序中根据是否成功执行,设置不同的返回值(例如,成功返回0,失败返回1)。

    Custom Action (以下简称CA)是否接收返回值,需要在步骤6>中设置。

    Custom Action接收返回值,会以0为判断标准。

    如果返回值是0,MSI会认为CA执行成功,安装继续;

    如果返回值为非0,MSI会认为CA执行失败,安装会被退出。

    5>  Action Parameters.

    点击“Browse”,选择DLL。

     

    6> Additional Options

    设置是否接收函数的返回值。

     

    7> Respond Options.

     

     8> Insert into Sequence.

    设置CA执行的顺序。

    将CA 放在Execute Sequence 中的好处是,用户无论通过界面安装还是静默安装,该CA 都会被执行;

    如果将CA放在UI Sequence 中,而安装包是静默安装,那么该CA是不会被执行的。

     

     9> 以上CA 的设置完成。

    步骤三、编译 VS工程,MSI 工程。

    步骤四、Debug 调试DLL。

     详细请参见:How to debug Custom Action DLL

    步骤五、安装测试。

  • 相关阅读:
    支付方法及注意事项
    网站负载均衡策略
    工作成长
    java内存机制
    关于前途的一些思考
    git记录
    关于博客
    如何为公司创造价值?
    遍历集合方法总结
    二叉树和红黑二叉树
  • 原文地址:https://www.cnblogs.com/cindy-hu-23/p/3725475.html
Copyright © 2011-2022 走看看