none
安装部署项目如何增加配置文件? RRS feed

  • 问题

  • 大家好,由于安装包里面有数据库连接还有系统账号等等,由于用户环境比较多样,因而在安装包里需要增加一个配置文件,比如setup.exe,边上有个config.ini,这样setup.exe执行时,直接读取该ini配置的参数即可,而不用重新打包,求指导,谢谢。
    注:这些信息不是写在app.config或者web.config里面的,比如我安装数据库时使用SA用户,但是创建完数据库后必须创建自己的用户,以后程序均使用新创建的用户。用户SA密码经常进行更改,但我们安装包不能一直变吧,只能通过配置文件的方式,每次密码改了,就修改下配置文件。
    2011年2月28日 12:40

答案

全部回复

  • 这个是可以的。

    本身vs的打包工具就是支持自己写代码扩展。

    不过通常的做法是,在安装的时候要求用户输入配置项(如数据库地址等),然后安装程序修改安装配置文件(web.config等)。

    如果要实现你的要求,只需要在安装的时候读取安装目录某个文件来获取配置项即可。

     


    family as water
    2011年2月28日 13:55
  • 这个是可以的。

    本身vs的打包工具就是支持自己写代码扩展。

    不过通常的做法是,在安装的时候要求用户输入配置项(如数据库地址等),然后安装程序修改安装配置文件(web.config等)。

    如果要实现你的要求,只需要在安装的时候读取安装目录某个文件来获取配置项即可。

     


    family as water
    目前是按照您说的说法做的,但是由于这一块安装服务是外包给其它公司去做的,从权限控制上,终端工程师安装时不会知道机器的相关账户信息,所有信息都是预设在安装包中,目前密码会定期修改,安装包按照某个账户信息打包后,过阵子就不能再用了,只有修改app.config,重新再编译一次,这样非常的麻烦,因而设想这种配置信息是不是写在安装包外面,类似ini文件一样,安装时,安装程序读取该ini信息即可。如果将来用户名密码发生变化,只需要给终端工程师新的ini文件即可。
    2011年3月1日 0:29
  • 如果使用System.Windows.Forms.Application.StartupPath 则返回的是C盘的system32目录
    2011年3月1日 0:47
  • 看来没有兄弟遇到过啊
    2011年3月1日 3:55
  • 如果使用System.Windows.Forms.Application.StartupPath 则返回的是C盘的system32目录


    您这个不是安装目录。

    安装目录是安装程序运行目录。

    在安装过程中输入参数,然后修改配置,这个我做过,你这个我没做过,不过我说的思路应该没问题。你需要自己试试。


    family as water
    2011年3月1日 7:39
  • 是不是这里应该使用Custom Actions 来做了, 安装完毕后自动运行这个程序, 这个程序在读取你的 ini 文件. 我想试一试这个方法,可是我的Custom Actions 就是怎么都没运行,所以不知道是否真的能行。

    还有另一个想法是可不可以让程序在第一次运行时, 先去读ini 文件初始化一下,然后更改config 里的一个标记为“已初始化”。

     

     

    2011年3月1日 11:40
  • 如果使用System.Windows.Forms.Application.StartupPath 则返回的是C盘的system32目录


    您这个不是安装目录。

    安装目录是安装程序运行目录。

    在安装过程中输入参数,然后修改配置,这个我做过,你这个我没做过,不过我说的思路应该没问题。你需要自己试试。


    family as water

    目前我也是让客户输入,然后去修改的config,但是这样必须得把服务器账户信息告诉安装人员。
    2011年3月1日 12:54
  • 是不是这里应该使用Custom Actions 来做了, 安装完毕后自动运行这个程序, 这个程序在读取你的 ini 文件. 我想试一试这个方法,可是我的Custom Actions 就是怎么都没运行,所以不知道是否真的能行。

    还有另一个想法是可不可以让程序在第一次运行时, 先去读ini 文件初始化一下,然后更改config 里的一个标记为“已初始化”。

     

     


    这个方法我也考虑过,但是没办法知道setup.exe所在的目录,因而没办法将外面的ini文件放到安装目录下面去。
    2011年3月1日 12:55
  • Hi,

    获取当前exe文件路径,可以试下这个:System.Windows.Forms.Application.ExecutablePath 方法

    修改读取 ini文件的内容,这里有2个例子供你参考:
       http://www.codeproject.com/KB/files/aejw_ini_class.aspx
       http://www.codeproject.com/KB/cs/ini.aspx
    不过建议您,可以试下xml。
    有关链接:
       http://bytes.com/topic/c-sharp/answers/897526-c-read-write-multiple-line-ini
       http://msdn.microsoft.com/zh-cn/library/b2s063f7.aspx

    很高兴能帮助您。

    Best Regards,
    Rocky

    2011年3月3日 8:52
  • you can use the SourceDir property of the Windows Installer.
    You can pass this info as a CustomAction in your deployment project : /SrcDir="[SourceDir]\"

    You can then use it in c# with : this.Context.Parameters["SrcDir"]

    http://feiyun0112.cnblogs.com/
    2011年3月4日 1:18
    版主