• SOLUTION:MSI安装包嵌套调用解决方案


    首先要感谢网友爱新觉罗.奕,是他首先将此方案发布出来,详细见AppInstall网站中《单MSI引导多MSI安装和卸载》一章,http://www.appinstall.cn/viewthread.php?tid=840&extra=page%3D1

    有关安装包嵌套调用,之前也琢磨过很多中办法,IntallScript,InstallScript MSI,MSI各种类型互相嵌套,但惟独发现MSI包无法嵌套,原因很简单,Windows Installer只接受单实例安装。

    解决方案:

    1. 首先创建主Basic MSI工程,设计组织你的安装程序。

    2. 【Installation Designer】 -> 【Media】 ->  【Releases】视图, 选中Chained .msi Packages,点击鼠标右键选择New Chained Package Ins

    3. 在Installation(run-time path)添加MSI包,出现提示时选择Yes(此情况适合压缩的安装包)

    4. Product code保留默认

    5. UI Level建议选择No UI(/qn),静默安装

    6. Install condition就是默认的Not Installed

    7. Install properties就保留默认空,其他如爱新觉罗.奕所讲的“此处填安装msi的参数,例如ADDLOCAL=ALL COMPANYNAME=MS”

    8. Removal condition输入:Not Installed,如果保留默认的REMOVE="ALL",卸载时在系统的“添加/删除”里子MSI包没被清空,其实已经卸载了

    9. Remove properties默认为空

    10. Release flags默认为空

    11. Streamed files中就是默认你的子MSI包

    12. Delete streamed files after installation保留默认的勾选

    13. 之后重新Build安装包并安装,你会在系统的“添加/删除”中看到主MSI程序和子MSI程序都被安装包目标机上

    补充:

    1. 必须是通过Windows Installer 4.5以上版本(可以通过Redistributables添加Windows Installer 4.5,目前Windows XP系统的Windows Installer多为3.1)

    2. 步骤7中如果设置了 ARPSYSTEMCOMPONENT=1 可以将子MSI程序隐藏(不在系统的“添加/删除”里显示)

    3. 如果非压缩的安装包,可以在步骤3中选择No,之后将子MSI添加到Support Files/Advanced Files/Disk 1下,调用的根路径是[SourceDir],之后按照相应文件结构调用 

  • 相关阅读:
    123. Best Time to Buy and Sell Stock III (Array; DP)
    122. Best Time to Buy and Sell Stock II (Array;Greedy)
    121. Best Time to Buy and Sell Stock (Array;DP)
    38. Count and Say (String; DP)
    60. Permutation Sequence (String; Math)
    内存中的堆栈
    42. Trapping Rain Water (Array,stack; DP)
    84. Largest Rectangle in Histogram (Array, Stack; DP)
    85. Maximal Rectangle (Graph; Stack, DP)
    Effective C++ .44 typename和class的不同
  • 原文地址:https://www.cnblogs.com/wanbinghong/p/1887870.html
Copyright © 2020-2023  润新知