我们目前有四个安装程序用于我们的客户端软件:
- ClientSetupTest - ClientSetupProduction - ClientUpdateTest - ClientUpdateProduction
它们之间唯一的区别在于Setup包含Crystal Reports可分发文件,而Update则不包含。Test和Production只是指定它们运行的环境,其中唯一的区别是Client.exe.config文件中的一行。
我知道这很愚蠢,所以在删除Crystal Reports后,我用一个安装程序替换了它们所有。新的安装程序将所选环境写入setup.config,并由文件属性引用(请参见此处)。
"file"属性是新的配置文件,随着这个新的安装程序而来。我遇到的问题是,如果我们修改旧安装上的Client.exe.config文件,然后运行新的安装程序,则配置文件永远不会更新为"file"属性。
是否有任何方法强制更新文件?RemovePreviousVersions并不完全起作用,因为它是一个不同的安装程序,除非我理解错了什么。我的当前想法,可能会起作用,就是在OnBeforeInstall方法中添加代码来重命名旧的Client.exe.config为备份文件,这样它总是写入新的文件。不过看起来应该有更简单的解决方案在安装程序本身中。有什么想法吗?
编辑: 在调用base.OnBeforeInstall()之前将旧配置文件重命名为Client.exe.config.old并没有起作用。它重命名了文件,但没有写入新的文件。
- ClientSetupTest - ClientSetupProduction - ClientUpdateTest - ClientUpdateProduction
它们之间唯一的区别在于Setup包含Crystal Reports可分发文件,而Update则不包含。Test和Production只是指定它们运行的环境,其中唯一的区别是Client.exe.config文件中的一行。
我知道这很愚蠢,所以在删除Crystal Reports后,我用一个安装程序替换了它们所有。新的安装程序将所选环境写入setup.config,并由文件属性引用(请参见此处)。
"file"属性是新的配置文件,随着这个新的安装程序而来。我遇到的问题是,如果我们修改旧安装上的Client.exe.config文件,然后运行新的安装程序,则配置文件永远不会更新为"file"属性。
是否有任何方法强制更新文件?RemovePreviousVersions并不完全起作用,因为它是一个不同的安装程序,除非我理解错了什么。我的当前想法,可能会起作用,就是在OnBeforeInstall方法中添加代码来重命名旧的Client.exe.config为备份文件,这样它总是写入新的文件。不过看起来应该有更简单的解决方案在安装程序本身中。有什么想法吗?
编辑: 在调用base.OnBeforeInstall()之前将旧配置文件重命名为Client.exe.config.old并没有起作用。它重命名了文件,但没有写入新的文件。