2011-11-02 54 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,您可以尝试迈克尔建议的方法。 –

相关问题