我们正在使用C#开发Windows应用程序。我们想根据品牌名称更改GUI(背景图像和其他控制图像和文本)。
应用程序的典型安装程序将具有名称brandname_programname.msi
。我们必须从MSI获取品牌名称并根据它分配GUI。请注意我们没有传递任何其他对象,设置以指示除MSI中不同品牌名称之外的差异。我们怎样才能达到这个效果?
我们不想要WPF解决方案。
答案 0 :(得分:4)
您的描述使我相信您在所有安装中发送了整个品牌图片和文本集合,然后通过更改要过滤gui元素的msi文件的名称。
我发现这是一个非常不稳定的解决方案,因为您完全依赖管理员不重命名msi文件 - 例如,如果管理员将名称从“CompanyA_programname.msi”更改为“programname.msi”,将会发生什么决定“在文件名中使用我们的名字没有用 - 我们只有这个。”
此外,许多客户不希望与竞争对手分享他们的品牌元素 - 因此包括msi中的所有品牌形象可能会与您的客户协议冲突。
在我看来,你应该从另一个方面解决问题 - 为每个品牌构建一个单独的msi文件,或者只构建一种类型的msi并强制安装环境将gui元素作为文件夹提供或者zip文件。然后使用这些元素来填充gui而不管公司。
当然,文件夹/ zip方法仍然是不稳定的,你必须在没有这样的文件时处理这种情况,但仍然没有那个单点故障。
根据我之前的经验,我强烈建议您为每个品牌构建一个单独的msi文件。通过这种方式,您可以最大限度地降低因误用或恶性行为风险而导致的失败风险。