我遇到了一件很麻烦的事 1,我通过innosetup创建了一个setup安装包 2,最近给程序开发了一个com组件,但是由于被占用,下次启动windows时必须更新 3,我使用了flag: restartreplace 效果很好 4,但是!最近,我的两个客户给我反馈说他们不想再提醒我“重新启动计算机” 5,他们说不小心重启电脑,导致其他软件数据丢失 6,我也这么认为。事实上,安装新版本时,旧版本仍然可以正常使用。因为restartreplace只会在下次启动电脑时进行替换,完全不影响使用,所以不需要重启电脑
那么,有没有办法在使用flag:restarttraplace时,安装包正常工作,用户看不到任何重启选项。安装完成后还可以像往常一样直接显示“启动程序”吗?
迫切需要答案。谢谢❤️
我认为没有简单的解决方案。我有类似的设置。我做什么:
如果已经安装了相同版本的有问题的文件,我不会尝试再次安装它,从而从一开始就防止冲突。
如果必须替换,但替换并不重要,我会以编程方式将“完成”页面重置回标准布局(无需重新启动)。
代码是这样的(这里不涉及
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
)。