我是一个从事了4年的复杂WPF项目的新手,对WPF技术有基本的了解,并且来自于基于web的产品。
该产品总是为两个不同品牌的客户发布,以下是一些差异:
1. Images in the resources folder.
2. Change (name, target, icon) in the installer project.
3. Installer general properties > change {AddRemoveProgramsIcon , Product Name , Title}/
4. Installer UpgradeCode.
5. Update msi installer name.
6. Remove dlls from references.
7. Config. files: CommonAssemblyInfo.cs> change AssemblyTitle, AssemblyProduct
8. Search and replace in many String resources files.那么,有没有一种可行的方法来让所有-或大部分-这些手动步骤自动完成?我找到了一些关于构建前和构建后操作的文章,但以前从未尝试过,如果它是合适的解决方案,将涵盖多少要点?
谢谢。
发布于 2014-01-14 22:47:39
这基本上是离散数学/集合论中的一个练习。在Windows Installer世界中,您可以创建合并模块来封装组件集合。在最简单的示例中,您需要三个合并模块:
1)客户端A文件合并模块
2)客户端B文件合并模块
3)通用文件合并模块
如果有多个要安装的可选功能,则可以进一步拆分公共文件。如果客户端A文件和客户端B文件包含这些可选功能的唯一配置数据,则还可以拆分这些文件。
最好也创建唯一的EXE名称(ClientA.exe和ClientB.exe ),使其具有自己的标记和图标,以便当您将它们用于各自的合并模块时,可以为它们提供唯一的快捷方式信息。在一个通用的DLL中使用核心功能使这些EXE非常薄的单板(DRY:不要重复自己)
最后,您创建了2个MSI项目,它们也是非常薄的单板。只包含ProductName、UpgradeCode、功能树和对话框UI。没有文件,因为所有文件都不是通过合并模块引用的。
如果您正在使用诸如Windows Installer、XML或InstallShield之类的工具来生成UI,那么有一种方法可以在单个项目中构建两个MSI,这样就不会重复。这涉及到非常高级的创作,在深入研究高级抽象之前,需要对“基本的”MSI创作有深刻的理解。此外,WiX支持“片断”,InstallShield支持“开发人员安装清单”,但严格地说,所有工具都只支持合并模块。
https://stackoverflow.com/questions/21113592
复制相似问题