Всем привет. Столкнулся с такой проблемой: в MS Visual Studio 2005 создал Setup Project. Всё настроил, создал Custom Actions. В Action с именем Install задал "Primary output from PJAdminTool (Active)" и в CustomActionData прописал " /InstallPath="[TARGETDIR]\" /SourcePath="[SOURCEDIR]\" ".
Скомпилил всё это и запустил файл setup.exe. Установка прошла успешно. Все Actions отработали. Далее, если повторно запустить файл seup.exe, Windows Installer предлагает мне "Repair" или "Remove" для моего продукта. Если выбрать "Repair" то начинается повторная установка, пробегает прогресс и ближе к концу мне выдаёт сообщение
"Exception occured whilу initializing the installation:
System.IO.FileNotFoundException: Could not load file or assembly
'file:///C:\WINDOWS\system32\Files\Eisfeld' or one of its dependencies. Не удаётся найти указанный файл."
Action "Install" не отрабатывает.
Разобрался, что ошибку вызывает параметр [SORCEDIR], если без него запускать, то всё нормально отрабатывает. Но без него нельзя. В функции, вызываемой при отработке Action "Install" необходимо знать путь к папке с установочными файлами.
В связи с этим такие вопросы:
1. Можно ли как-нибудь отключить эту опцию "Repair" в созданном инсталляторе?
Если нет, то:
2. Как ещё можно узнать путь к установочным файлам?
Вот часть кода:
public class MyInstaller : Installer
{
public override void Install(System.Collections.IDictionary stateSaver)
{
try
{
String lInstallPath = this.Context.Parameters["InstallPath"];
String lSourcePath = this.Context.Parameters["SourcePath"]; //???
3. Или может ещё есть какие-нибудь предложения?