InstallShield, как никогда не перезаписывать файл - PullRequest
5 голосов
/ 14 февраля 2012

В моей файловой структуре есть один файл (база данных FireBird), который после первой установки никогда не будет перезаписан. Это кажется довольно простой задачей, но я потратил слишком много времени, бесполезно пытаясь найти ответ.

Если щелкнуть правой кнопкой мыши файл и выбрать «Свойства», будет установлен только флажок «Всегда перезаписывать». Я бы просто оставил номер версии на том же уровне, что, как мне сказали, предотвратит перезапись файла, но это может быть опасно в моей ситуации, и в реальных свойствах файла нет места, где можно даже поместить номер версии.

Я предполагал, что это будет довольно простым решением, но я, конечно, еще не нашел его.

Заранее спасибо за любую помощь, ребята. Ты жжешь.

1 Ответ

6 голосов
/ 14 февраля 2012

Два подхода:

1) «Самый простой» способ для InstallShield никогда не перезаписывать файл - это никогда не устанавливать его в первую очередь. Установите его как a.txt, и ваше приложение скопирует его в b.txt при первом запуске, и я nstallShield никогда даже не узнает о b.txt.

2) Создайте компонент в InstallShield и добавьте свою базу данных в качестве ключевого файла. Предположительно, содержимое базы данных со временем будет меняться, что приведет к разной дате создания и дате изменения. В этом сценарии правила установки версий файлов (OMUS) по умолчанию InstallShield (OMUS) предписывают, что файл не будет перезаписан.

3) Если # 2 все еще не работает, установите для атрибута Never Overwrite компонента значение Yes.

Помните, что стоимость файла основана на KeyFile. Независимо от того, к чему относится файл ключа, все остальные файлы в компоненте будут выполнять то же самое в отношении перезаписи. «Always Overwrite» - это «версия, лежащая», когда мы ложно сообщаем MSI, что файл Verison - 65535.0.0.0, и, таким образом, правило Create / Modification заменяется правилом Versioned trumps Non-Versioned files.

...