選擇一個子組件也會默認自動選擇其父組件(雖然你可以禁用它)。這聽起來像你想要的行爲,但你只是想着它。
說你有組件A和組件B,它們是獨立的。您還有組件C和組件D,每個組件可以彼此分開安裝,但需要安裝組件B.
[Components]
Name: "A"; Description: "app 1"
Name: "B"; Description: "app 2"
Name: "B\C"; Description: "feature C of app 2"
Name: "B\D"; Description: "feature D of app 2"
考慮到這種安排,如果用戶願意,用戶可以自己選擇A或B;他們也可以選擇添加C或D(或不)。但選擇C或D會強制B被選中。 (注意:這裏假設你還有其他條目是有條件的,尤其是在B本身上。如果你只是自己測試複選框,還沒有添加條件,那麼你會有要以獲得所需的行爲增加Flags: checkablealone
到B)
對於示例的更接近於上面,試試這個:
[Components]
Name: "app1"; Description: "app 1"
Name: "app1\app2"; Description: "app 2"
Name: "app1\app2\child"; Description: "feature"
Name: "app1\app3"; Description: "app 3"
Name: "app1\app3\child"; Description: "feature"
應用1可以單獨安裝,並且應用程序2可與應用程序3分開安裝 - 但選擇應用程序2或應用程序3將強制應用程序1包含在內也是。 (是的,這將看起來像一個可見的層次 - 但你可能應該表明,無論如何,讓用戶知道爲什麼他們的選擇被迫以這種方式。)
另一種可能性:如果沒有理由的用戶需要自己安裝app1,那麼你可以完全從組件中刪除它。只需將條件從Components: app1
更改爲Components: app2 or app3
即可。 (或者,如果app2和app3是唯一的替代品,並且它們都需要app1,則完全刪除該條件。)
父母1是否需要是可選的?並且檢查狀態是否需要實際更改? Inno可以在執行安裝時處理表達式,例如:'Components:parent1或parent2或parent3'這將導致它安裝該組件。也許你可以在「parent1」上調整任何UI /圖標。 – Deanna
@Deanna是的,它確實需要單獨選擇。爲了清楚起見,該軟件包是一個包含各種庫的SDK。其中一些取決於其他人。你可以想象這會產生複雜性。 – Ioan
@TLama我希望你保持你的答案,因爲這是幫助我達到這個近似解決方案。 – Ioan