2016-03-09 73 views
1

我需要更改ConfirmUninstallUninstalledMost(以防萬一)和UninstalledAll明確地從腳本設置條件。類似這樣的:更改來自Pascal代碼的Inno Setup消息

if FileExists(ExpandConstant('{app}\Slash.exe')) then 
    SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Slasher']) 
else if FileExists(ExpandConstant('{app}\Frank.exe')) then 
    SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Frankenstein']) 
else 
    SetupMessage(msgConfirmUninstall) := FmtMessage(SetupMessage(msgConfirmUninstall), ['Dagon Video Tools']); 

但這不起作用。這些消息用於MsgBoxES,所以我想不出任何其他方式。 Running in silent mode並不適合我,因爲如果程序(或其中之一)已安裝,安裝程序將運行卸載,因此我不希望用戶通過運行安裝程序意外卸載程序。

回答

1

你不能改變這些。也許除了實現一些監視新消息框並更新它們的DLL。


關於the silent uninstall solution:我不明白與您的問題「如果安裝程序(或其中一人)已安裝將卸載運行」。

我假設你只有在用戶確認他想安裝新版本後才運行卸載程序,所以你實際上想要默認運行卸載程序,對不對?

反正沒有什麼阻止您從您的安裝運行卸載非悄無聲息,即使在進入「添加/刪除程序」指的是「無聲」的安裝。


您可以使用,覆蓋了所有設置類型的一般消息:

[Messages] 
ConfirmUninstall=Are you sure you want to completely remove this game? 

當你的卸載信息取決於類型所安裝應用程序,您可以修改安裝程序:

  • 創建自定義「類型」頁面(如菜單)作爲第一個。
  • 一旦用戶選擇「類型」,用自定義開關(例如/APPTYPE=slasher)重新啓動安裝程序並退出。
  • 一旦安裝程序(重新)與/APPTYPE一起運行,從一開始就知道您正在安裝什麼組件/類型,因此您可以相應地設置AppName(使用a scripted constant)。
  • 當然,您可以跳過自定義「類型」頁面。

這實際上並不難實現。唯一的缺點是在用戶選擇「類型」之後,設置窗口被「重新創建」。

我已經在我的答案Inno Setup Change AppName based on component(s) selected中草擬了這個解決方案。

相關問題