Не могу создать правильную структуру папок в моем MSI - PullRequest
3 голосов
/ 09 сентября 2011

Мое приложение хранит данные в

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 голосов
/ 09 сентября 2011

ProductVersion - это предопределенное свойство установщика, в котором хранится ваша версия MSI.Это гораздо более надежная версия для пути к папке с данными приложения, чем версия сборки.

Большинство установщиков записывают эту версию где-то (например, в реестр), а затем установленное приложение считывает и использует ее.

Это также имеет больше смысла в этом смысле.Вы устанавливаете версию своего продукта, а не версию файла.Если версия сборки остается одинаковой в двух разных версиях установщика, могут возникнуть некоторые конфликты.

0 голосов
/ 09 сентября 2011

Если вы определите свойство ProductVersion в MSI, оно будет работать.(Или вы можете называть его как угодно.)

Насколько я знаю, в установщике Windows нет стандартного свойства, в котором есть версия сборки.Следовательно, вы должны создать его самостоятельно.

Недостаток этого подхода заключается в том, что вы должны вручную обновлять это свойство версии в проекте установки при изменении версии вашей сборки.

...