【问题标题】:Copy files from another MSI Installshield Permier 2010从另一个 MSI Installshield Permier 2010 复制文件
【发布时间】:2012-10-14 22:48:49
【问题描述】:

我想检测是否安装了以前的程序,如果是,请从该程序中复制一些特定的文件和文件夹。

我需要检测这个程序的安装目录,因为用户可以更改安装目录,如果程序没有安装则中止安装。

我在升级会话中创建了一个条目,选择了程序 msi,installshield 安装设计器已经用程序升级代码填充了该条目。但是在没有安装程序的情况下尝试重新编译程序后,我能够以相同的方式安装。在升级会话中创建条目不会使安装在程序不存在时中断,而且我不明白我必须将检测属性值放在哪里才能使安装停止。

【问题讨论】:

    标签: windows-installer installshield installshield-2010


    【解决方案1】:

    您需要使用应用程序搜索而不是升级。

    升级表用于查找同一应用程序的先前版本,如果找到,则执行升级:删除先前版本并安装新版本。

    阅读 Searching for Existing Applications, Files, Registry Entries or .ini File Entries 或 InstallShield 文档中的类似部分。

    【讨论】:

    • 非常感谢您的回答。我能够在安装 shield Premier 中找到的唯一选项是“系统搜索”。它会打开一个向导,帮助我查找文件、文件夹、注册表项、ini 文件值、xml 文件值。我m not sure if im 能够使用它们来查找是否安装了另一个 msi,并将一些文件从这个应用程序复制到我的应用程序安装文件夹。
    • “文件或目录搜索用于确定用户是否已经安装了某个版本的应用程序。”如果用户选择了不同的安装路径怎么办?这个选项不能解决我的问题。
    • 首先,不推荐从另一个安装中复制文件。它们必须属于同一组件,在该应用程序和您的应用程序中 - 然后安装程序会自动检测它。
    • 安装路径通常保存在注册表中。因此,您将查找该应用程序的安装注册表项,对从注册表获得的路径执行文件搜索。尽管如此,最好的方法是让您的安装包独立:包本身包含运行所需的所有文件。更重要的是,您无法使用 Windows Installer 引擎复制这些文件,除非您将临时行添加到 msi 数据库,或者使用自定义操作(不是 msi 方式)。如果该应用程序被卸载怎么办?
    • 我的应用程序是另一个不是我创建的程序的路径。我的目标是检测这个程序是否以前安装过,获取安装目录,创建我自己的安装目录,将该程序的副本复制到我自己的文件夹并将我的文件应用到这个新文件夹,所以程序的原始版本不会受到影响。
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多