【问题标题】:InstallShield 2009 basic MSI silent install: how to set "Repair" by defaultInstallShield 2009 基本 MSI 静默安装:如何默认设置“修复”
【发布时间】:2010-11-05 11:00:06
【问题描述】:

安装 shield 首映 2009:基本 MSI 从命令行键入 setup.exe /s /v/qn 静默安装。但是如果它在默认情况下选择“修改”之前安装过一次并且不会替换文件。但我需要再次复制文件。默认情况下如何在第二次静默安装时执行“修复”?

【问题讨论】:

    标签: windows-installer default installshield mode


    【解决方案1】:
    Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111}" /v"/qn"
    

    其中“{11111111-1111-1111-1111-111111111111}”是您要修复的安装的 ProductCode GUID。

    【讨论】:

    • 从命令提示符执行:setup.exe /s /v"/f {89DC2D2E-F4C3-4BD1-8853-2EA5F50A8C0C}" 打开一个 Windows 安装程序窗口,那里给出了许多开关描述。但是 setup.exe 不会复制如果我双击 setup.exe 文件会复制的文件。怎么办?
    • Leara,我使用了类似的命令(来自命令提示符): setup.exe /s /v"/qn REINSTALL=ALL" 它的作用是:如果 setup.exe 在此之前运行它可以部署文件并且第一次没有安装(之前没有安装)!!!但我想要的是是否安装了 setup.exe 它应该再次重新部署文件......我该怎么办?
    【解决方案2】:

    首先:看起来我们需要更多关于您想要实现的目标的详细信息。您是要重新安装产品以修复任何损坏的组件,还是要安装产品的新版本(可能与以前的设置并排安装)。

    William 的回答看起来是正确的,但引号可能存在​​一些问题。您描述的行为表明 Windows Installer 无法解析命令行。我尚未对此进行测试,但请尝试:

    Setup.exe /s /v"/f {11111111-1111-1111-1111-111111111111} /qn"

    一些背景信息:setup.exe 是一个Installshield-provider 安装启动器。命令行中 /V 之后的任何内容都“按原样”传递到主 Windows Installer exe 文件 msiexec.exe (msiexec.exe command line parameter reference)。

    请注意,Windows Installer 不同于任何以前的部署解决方案。安装 MSI 后,Windows Installer 会记录安装的内部 GUID。因此无法安装同一产品的多个实例(除非您为此设计了 MSI)。

    一些msiexec.exe示例命令行:

    安装

    • msiexec.exe /i MySetup.msi /q

    卸载

    • msiexec.exe /x MySetup.msi /qn
    • msiexec.exe /x {11111111-1111-1111-1111-111111111111} /qn

    修复

    • msiexec.exe /f MySetup.msi /qn
    • msiexec.exe /f {11111111-1111-1111-1111-111111111111} /qn

    Admin Image(从 MSI 中提取源文件):

    • msiexec.exe /a MySetup.msi TARGETDIR="C:\ExtractSourcesHere"

    从上述任何命令行中删除 /qn 以交互运行而不是静默运行。

    【讨论】:

    • 我需要静默安装程序[基本 msi 安装程序]。案例1:如果程序没有安装。我需要什么:安装它我做了什么:setup.exe /s /v/qn Case-2:如果程序已经安装。我需要什么:再次安装程序。为什么我需要:可能会有文件丢失。所以我需要一个满足上述两种情况的命令来执行。
    【解决方案3】:

    InstallShield@2009

    添加以下代码:

    函数 OnMaintUIBefore() ... ... 开始 // 如果是静音模式,则设置为修复模式并继续 如果(模式 = 静音模式)那么 nType = 修复; 转到 Dlg_SdFeatureTree; endif;

    【讨论】:

      【解决方案4】:

      我刚刚找到了解决方案: 对于基本 MSI,打开属性管理器视图并将属性 _IsMaintenance 设置为“重新安装”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-01
        • 2017-09-09
        相关资源
        最近更新 更多