我有一个遗留项目,他们有一大堆visual studio安装项目,可以为不同版本的第三方应用程序创建相同插件的安装包。
我正在试图弄清楚如何构建设置项目以便它们起作用。
提取以前编译的MSI的内容以及构建项目时获得的内容,MSI中的Global Assembly Cache文件夹中的程序集与另一个不同。另一个MSI后缀附加到程序集的名称。
作为MSI编译过程的一部分,他们显然使用The SQL query strings for Windows Installer在编译的MSI包中重命名程序集。
我有脚本并且针对我的MSI运行它不会重命名汇编文件,就像我提取MSI内容时所看到的那样。
我认为应该重命名程序集的SQL语句具有以下形式:
update MsiAssemblyName set Value = 'AssemblyNameSuffix' where Value = 'AssemblyName'
运行脚本确实以某种方式更改了MSI,但我没有看到重命名的汇编文件。
问题是,是否可以用这种方式用SQL重命名MSI中的汇编文件,如果可以,那么如何实现呢?
谢谢!
答案 0 :(得分:1)
不,这是不可能的。即使您更新了File表以获得新文件名,组件也会被破坏,因为.NET Assemblies中包含描述其程序集名称,命名空间和类的元数据。重命名文件会破坏它。