InstallShield XML File Changes - Change node attribute on install

喜欢而已 提交于 2019-12-07 07:49:16

问题


I am building a web service installation using InstallShield 2012, and I need to modify the Web.config file of my app based on user input. I have introduced the PromptServerAndDatabase dialog just after the DestinationFolder dialog. I have also set up the Web.config file in the XML File Changes view in InstallShield. Here is my basic web.config file structure:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <configSections>
        ...
    </configSections>
    <appSettings>
        <add key="DatabaseServer" value="sql08r2">sql08r2</add>
        <add key="DatabaseName" value="UserDatabaseName">UserDatabaseName</add>
    </appSettings>
    ...
</configuration>

At this time I can successfully change the literal value of a node, but I cannot change an attribute of a node.

Here's the structure within InstallShield in the XML File Changes view:

Also, here's the Advanced tab which is virtually identical for all three nodes. Both nodes associated with Database Name use the same property, while the node for Server Name uses the property [SERVER_NAME] (not shown):

After running the installer the Web.config file is successfully updated. The values of the DatabaseName and ServerName nodes are updated. However, the value for the "value" attribute in the DatabaseName node is not, although it should reflect the same text as the node's actual value. Once I perfect this I will need to duplicate it for the ServerName node, but I left that out for simplicity.

I have done some additional research on this and I found this site which was very helpful overall, but didn't resolve this issue for me:

http://helpnet.installshield.com/installshield16helplib/XML-XPath.htm

Maybe the answer is there and I am just missing it, IDK.

Thanks for any help offered on this.


回答1:


OK so my problem was that I had a basic misunderstanding of the General tab and the attributes being added there. The attributes on the General tab are literally the attributes of the XML node, and the value column of each entry in that table is the value that the attribute will be set to. So by changing that value to the property I was changing, it solved my problem. I left the Advanced tab as-is because my options there were correctly changing the value of the element's content. Finally, I changed the XPath query to remove the value attribute because there is a chance that the web.config file being installed will change this value in the future. Since there is only one add node with a key value of DatabaseName or ServerName within the appSettings node, the XPath search for key="" was all I needed.

Here's a visual:



来源:https://stackoverflow.com/questions/16428449/installshield-xml-file-changes-change-node-attribute-on-install

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!