无法在我的MSI中创建正确的文件夹结构

时间:2011-09-09 14:58:19

标签: visual-studio installer windows-installer

我的应用程序将数据存储在

C:\Documents and Settings\All Users\Application Data\Company\Product\foo

但是,如果我在代码中使用 Application.CommonAppDataPath ,则会在路径末尾附加汇编版本。例如

C:\Documents and Settings\All Users\Application Data\Company\Product\foo\1.0.2.0

这意味着我的应用无法找到我期待的数据。我可以操纵我的代码来剥离最后一个文件夹,但我真正想做的是让我的MSI创建适当的程序集版本文件夹。

我试过了;

[CommonAppDataFolder][Manufacturer]\[ProductName]\[Version]\
[CommonAppDataFolder][Manufacturer]\[ProductName]\[ProductVersion]\ 

但两者都没有给我正确的结构。 (实际上,一个不创建文件夹,另一个基于MSI版本创建一个文件夹。)

那么有没有办法通过msi创建相应的文件夹,还是需要解析AppDataPath,或让我的应用创建版本文件夹及其所需的支持结构?

2 个答案:

答案 0 :(得分:0)

如果您在MSI中定义ProductVersion属性,那么它将起作用。 (或者你可以随意调用它。)

据我所知,Windows Installer中没有标准属性,它具有程序集的版本。因此,你必须自己创建它。

此方法的缺点是,当程序集的版本发生更改时,您必须在安装项目中手动更新此版本属性。

答案 1 :(得分:0)

ProductVersion是预定义的安装程序属性,用于存储您的MSI版本。对于应用程序数据文件夹路径,这是一个比程序集版本更可靠的版本。

大多数安装程序在某处编写此版本(例如注册表),然后安装的应用程序将读取并使用它。

这种方式也更有意义。您正在安装产品版本,而不是文件版本。如果程序集版本在两个不同的安装程序版本中保持不变,则可能会发生一些冲突。