2011-11-02 56 views
1

我在InstallShield X中使用無提示安裝文件來升級現有程序。如何在不更改所有值的情況下使用InstallShield響應文件?

當常安裝運行(非沉默)它提示各種信息,其獲取寫入到一個ini文件的用戶。如果是新安裝,它將爲提示提供默認值,如果是升級,則會顯示ini文件中的值。

我想創建一個靜默安裝,更新在ini文件中的一些值,而不會覆蓋他人。問題是,當我創建setup.iss時,它明確使用我的ini文件中的值。

有沒有辦法告訴靜默安裝,接受現有的價值?即就好像用戶只需點擊「下一步」而不更改顯示的值?

這裏是一個人爲的例子:

假設首次安裝提示「名稱」和我輸入「WileCau」。該名稱存儲在程序ini文件中。

下一次我運行安裝程序,它會提示輸入「Name」它將讀取ini文件並在輸入字段中顯示「WileCau」,我只需單擊「Next」接受現有值。

的問題是,如果我創建一個靜默安裝這個包含類似:

... 
[{GUID}-DlgOrder] 
... 
Dlg1={GUID}-AskText-0 
... 
[{GUID}-AskText-0] 
szText=WileCau  <-- Puts this text in the entry field 
Result=1   <-- Indicates clicking "Next" 
... 

凡說szText=WileCau我想使用的任何值是在用戶的輸入字段(例如,也許是「鮑勃「)。

回答

3

可以使用SilentWriteDataSilentReadData實現自己的無聲對話程序。例如,您可以在寫入時檢查該值是否爲缺省值,如果是,則編寫一個特殊字符串。在讀取時,如果您讀取特殊字符串,請勿覆蓋默認值。您必須對OnFirstUIBefore中使用的所有現有對話框執行此操作,並且需要執行此操作,可能會包括InstallShield提供的對話框的覆蓋。

+0

謝謝,我希望有通過響應文件做的一些方法,但除非我誤解Cosmin它可能不可能在IS X.計劃B是使用佔位符,因爲你建議。我不知道靜音[讀|寫]數據,所以感謝他們的信息。 – WileCau

1

INI條目formatted,所以他們支持安裝程序的性能。這意味着您可以使用安裝程序屬性而不是硬編碼值。例如:

[MY_PROPERTY] 

該屬性可隨後與從用戶(例如編輯框)獲取的信息您的自定義控制有關。

+0

我不明白這是什麼有一個InstallScript中(或安裝InstallScript MSI)響應文件做。 –

+0

@Cosmin,我讀了你發佈的鏈接,並按照建議添加了一個屬性。然後以爲我可以將[MyProperty]放入響應文件中,InstallShield將它識別爲一個屬性並將其替換爲屬性值,但它只接受[MyProperty](文本文本)作爲輸入的值。我誤解了你的答案,還是應該工作,但我錯過了一些東西? – WileCau

+0

對不起,我以爲你使用MSI本地INI支持。對於InstallScript,您可以嘗試邁克爾建議的方法。 –

相關問題