1

我是一个 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.

那么,是否有一种可行的方法可以自动完成所有或大部分手动步骤?我发现了一些关于 Pre 和 Post 构建操作的文章,但之前从未尝试过,如果它是合适的解决方案,将涵盖多少点?

谢谢你。

4

1 回答 1

1

这基本上是离散数学/集合论的练习。在 Windows Installer 世界中,您可以创建合并模块来封装组件集合。在最简单的示例中,您将需要三个合并模块:

1)客户端A文件合并模块

2)客户端B文件合并模块

3) 常用文件合并模块

如果要安装多个可选功能,则可以进一步拆分公共文件。如果客户端 A 文件和客户端 B 文件包含这些可选功能的唯一配置数据,您还可以拆分它们。

最好还使用自己的品牌和图标创建唯一的 EXE 名称(ClientA.exe 和 ClientB.exe),以便在将它们使用到各自的合并模块中时,可以为它们提供唯一的快捷方式信息。使这些 EXE 非常薄的单板在一个通用 DLL 中具有核心功能(干:不要重复自己)

最后,您创建了 2 个非常薄的 MSI 项目。仅包含 ProductName、UpgradeCode、Feature Treee 和 Dialog UI。没有文件,因为所有文件都没有通过合并模块引用。

如果您使用诸如 Windows Installer XML 或 InstallShield 之类的工具来生成您的 UI,则有一种方法可以从一个项目中构建两个 MSI,这样就不会重复任何事情。不过,这涉及到非常高级的创作,需要在深入研究高级抽象之前对“基本”MSI 创作有深刻的理解。WiX 还支持“片段”,InstallShield 支持“开发人员安装清单”,但严格来说,所有工具都支持仅 Windows 安装程序合并模块。

于 2014-01-14T14:47:39.400 回答