AssemblyTitle是否在WiX包中提供?

时间:2014-12-22 19:28:37

标签: .net wix .net-assembly

我正在为WinForms应用程序创建WiX安装程序。应用程序的名称将在下个月或两个月的某个时间点发生变化,但我不知道新名称会是什么,并且无法控制它。我在应用程序的GUI层中定义了一个包含应用程序当前名称的字符串常量,并更改了使用该产品名称的任何代码来使用此常量。

 Public Const PRODUCT_NAME As String = "My Funtimes Desktop Application"

我将AssemblyTitle设置为使用此常量。

<Assembly: AssemblyTitle(PRODUCT_NAME)>

现在,如果可能的话,我想在我的wxs文件中引用AssemblyTitle值,这样当我知道应用程序的最终名称时,我只需要在一个地方更改它。如下所示:

<Product Id="*" Name="!(bind.assemblyTitle.FileIDOfGUIexe)" />

...但我似乎找不到任何明显的地方传递给链接器。

有没有办法可以在WiX文件中访问.NET程序集的AssemblyTitle?

2 个答案:

答案 0 :(得分:2)

WiX读取的程序集属性列表位于http://wixtoolset.org/documentation/manual/v3/overview/light.html。 AssemblyTitle不是其中之一,但可以在http://wixtoolset.org/issues/提交功能请求。

答案 1 :(得分:1)

这是非常具体的功能,我怀疑WiX有这个功能。

绑定来自文件,称为*.wxl (wix localization files)。 Visual Studio通过wix灯自动绑定它们。它为每个本地化文件生成一个msi。 http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/build_a_localized_version.html

如果您创建预构建事件/预构建ms-task,它将读取assemblyTitle属性,并从中生成* .wxl文件,这可以工作。

另一个选项是在wxs文件上运行动态XSLT,也在prebuild事件中运行。

在生成msi后(在构建后的事件中)还可以选择运行orca.exe,并让orca更改ProductName。

无论哪种方式,我认为你最终编写自己的ms-build任务/某种可读取AssemblyTitle的可执行文件,它可能涉及预构建/后构建任务。