我的应用程序将数据存储在
中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,或让我的应用创建版本文件夹及其所需的支持结构?
答案 0 :(得分:0)
如果您在MSI中定义ProductVersion
属性,那么它将起作用。 (或者你可以随意调用它。)
据我所知,Windows Installer中没有标准属性,它具有程序集的版本。因此,你必须自己创建它。
此方法的缺点是,当程序集的版本发生更改时,您必须在安装项目中手动更新此版本属性。
答案 1 :(得分:0)
ProductVersion是预定义的安装程序属性,用于存储您的MSI版本。对于应用程序数据文件夹路径,这是一个比程序集版本更可靠的版本。
大多数安装程序在某处编写此版本(例如注册表),然后安装的应用程序将读取并使用它。
这种方式也更有意义。您正在安装产品版本,而不是文件版本。如果程序集版本在两个不同的安装程序版本中保持不变,则可能会发生一些冲突。