Inno Setup:如何使用标志:restartreplace但不重新启动

问题描述 投票:0回答:1

我遇到了一件很麻烦的事 1,我通过innosetup创建了一个setup安装包 2,最近给程序开发了一个com组件,但是由于被占用,下次启动windows时必须更新 3,我使用了flag: restartreplace 效果很好 4,但是!最近,我的两个客户给我反馈说他们不想再提醒我“重新启动计算机” 5,他们说不小心重启电脑,导致其他软件数据丢失 6,我也这么认为。事实上,安装新版本时,旧版本仍然可以正常使用。因为restartreplace只会在下次启动电脑时进行替换,完全不影响使用,所以不需要重启电脑

那么,有没有办法在使用flag:restarttraplace时,安装包正常工作,用户看不到任何重启选项。安装完成后还可以像往常一样直接显示“启动程序”吗?

迫切需要答案。谢谢❤️

inno-setup inno-setup-v6
1个回答
0
投票

我认为没有简单的解决方案。我有类似的设置。我做什么:

  • 如果已经安装了相同版本的有问题的文件,我不会尝试再次安装它,从而从一开始就防止冲突。

  • 如果必须替换,但替换并不重要,我会以编程方式将“完成”页面重置回标准布局(无需重新启动)。

    代码是这样的(这里不涉及

    RunList
    ,因为其他原因,我把标准的
    Run
    /
    postinstall
    功能替换成了我自定义的功能)。

    WizardForm.YesRadio.Visible := False;
    WizardForm.NoRadio.Visible := False;
    WizardForm.NoRadio.Checked := True;
    
    S := SetupMessage(msgFinishedLabel);
    StringChange(S, '[name]', 'My Program');
    WizardForm.FinishedLabel.Caption :=
      S + NewLine + NewLine +
      SetupMessage(msgClickFinish) + NewLine;
    

完整代码在这里:
https://github.com/winscp/winscp/blob/master/deployment/winscpsetup.iss
值得注意的部分位于

ShouldInstallShellExt
CurPageChanged
(
CurPageID = wpFinished
)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.