0

抱歉 - 我是 InstallShield 的新手。我继承了一个 InstallShield 2013 项目,该项目向用户显示一个对话框,让用户选择一个 SQL Server,并根据他们的选择在配置文件中设置一个值。这不起作用,所以我在 IS 中打开了项目并查看了系统配置下的文本文件更改,那里没有任何东西可以做到这一点。那么我如何确定这种情况发生在哪里(或者在我的情况下没有发生),然后我如何让它发挥作用?我需要在名为 server.config 的文件中设置数据源和初始目录。

那么如何确定用户选择了什么,然后将其保存在这个文件中呢?看起来我可以设置文本文件更改,但是如何访问用户选择的值?我怎样才能弄清楚应该在哪里执行此操作的“代码”?

谢谢,本

4

2 回答 2

0

事实证明,我误解了这个问题,并且该项目从未设置为更改该值,所以我所要做的就是设置一个文本文件更改,它可以完美运行。感谢@Michael Urman 的彻底回复 - 我真的很感激!

于 2017-09-25T15:09:22.363 回答
0

我会尝试从有问题的对话框和控件中跟踪这一点,或者通过详细日志跟踪该值。既然你说今天不行,那么我下面描述的流程很可能会出现中断,而且由于你不知道安装项目的完整状态,所以可能很难识别。所以从你所知道的搜索。

自上而下:配置了什么

首先,找到您作为选择的用户填写的对话框。然后找出与特定控件关联的属性。现在你有了一个线程;拉上它。

在直接编辑器中搜索对属性的引用。如果该属性名为 MYCONFIG,则仅搜索该属性:MYCONFIG。您可能会发现某种类似于 [MYCONFIG] 的用法,它通常是指定使用 MYCONFIG 值的格式字符串。您可能还必须搜索与您的项目相关的所有文件,因为自定义操作实现可以是存储在您的 InstallShield 项目之外的代码。

使用可能在 ControlEvent、CustomAction 或其他一些表中。如果它在 ControlEvent 中,它可能用于设置另一个属性。如果它位于设置属性(类型 51)的 CustomAction 中,则同上,这在 Custom Actions and Sequences 视图中可能更容易理解。在这种情况下,还要搜索设置的属性。

如果您在 ISSearchReplace* 或 ISXml* 或 IniFile 之类的表中找到它,它可能是 Text Files Changes、XML File Changes 或 INI File Changes 的一部分,并且该视图应该更容易理解。

也许那个线程在某个地方死胡同。一个属性被设置,但从未被引用。所以尝试从另一端搜索。

自下而上:写什么

如果有文本文件更改、xml 文件更改、ini 文件更改或引用您需要更新的文件的自定义操作,请查看他们从何处获取信息。试着跟着它回来。如果它们写得很好,您应该能够识别属性(注意一个名为 CustomActionData 的属性来自与其使用的自定义操作的名称匹配的属性),然后使用与上述相同的想法进一步追溯,但在另一个方向。

问题出在哪里?

如果线程没有连接,那可能就是问题所在。自定义操作也可能缺少权限但未报告失败,或者文件名或路径在此过程中的某处配置错误。寻找类似的小东西,如果事情看起来应该工作但没有工作。

于 2017-09-22T14:36:53.080 回答