Я пытаюсь создать проект установки для службы Windows. Я следил за указаниями http://support.microsoft.com/kb/816169, чтобы без проблем создать проект установки.
Я хочу иметь возможность получить значение во время установки, чтобы обновить app.config с желаемыми настройками пользователя. Я добавил диалоговое окно с текстовыми полями (A) для извлечения значений. Я установил свойство Edit1Property в значение "TIMETORUN", а в свойстве CustomActionData моего первичного вывода я добавил следующее:/TimeToRun = "[TIMETORUN] \". Все идет нормально. Запустив настройку, я могу получить значение TimeToRun из коллекции Context.Parameters без проблем.
Чтобы найти app.config, мне нужно также передать значение свойства TARGETDIR Windows Installer в мое пользовательское действие. Здесь все начинает разваливаться. Чтобы достичь этого, вышеуказанные CustomActionData должны быть изменены следующим образом:/TimeToRun = "[TIMETORUN] \" /TargetDir = "[TARGETDIR] \". Теперь, когда я запускаю настройку, я получаю следующее сообщение об ошибке:
Ошибка 1001. Исключение произошло при инициализации установки. System.IO.FileNotFoundException: Не удалось загрузить файл или файл сборки:///C:\Windows\SysWOW64\Files или одна из его зависимостей. Система не может найдите указанный файл.
Если вы решите эту проблему, вы неизбежно найдете людей, имеющих огромный успех, просто добавив конечную косую черту в /TargetDir = "[TARGETDIR] \" часть CustomActionData. Это, к сожалению, не решает мою проблему.
Я пробовал так много разных вариантов строки CustomActionData, и ни одна из них не работала. Я попытался войти в файл из моего переопределенного метода установки, чтобы определить, где был обрыв, но файл журнала не создается, потому что он даже не доходит до этого. Как показывает ошибка, сбой происходит на этапе инициализации.
У меня есть подозрение, что это может быть одна из зависимостей, которые пытается загрузить проект установки. Возможно, что-то добавляется к строке CustomActionData и не играет хорошо с значением TARGETDIR (которое содержит пробелы, то есть "C:\Program Files\My Company\Project Name" ). Опять же, это еще одна догадка, которую я не могу подтвердить из-за моей неспособности отладить процесс установки.
Еще одна вещь, о которой стоит упомянуть, и да, это еще одна догадка, может быть, это проблема с установками проектов в 64-разрядной версии Windows? Я запускаю Windows 7 Professional.
Я буду указывать имена зависимостей в том случае, если это поможет:
- Microsoft.NET Framework
- Microsoft.SqlServer.DtsMsg.dll
- Microsoft.SqlServer.DTSPipelineWrap.dll
- Microsoft.SqlServer.DTSRuntimeWrap.dll
- Microsoft.SQLServer.ManagedDTS.dll
- Microsoft.SqlServer.msxml6_interop.dll
- Microsoft.SqlServer.PipelineHost.dll
- Microsoft.SqlServer.SqlTDiagM.dll
Как вы можете почерпнуть из зависимостей, служба Windows планирует планировать вызов пакета DTSX.
Извините за долгий разглагольствование. Спасибо за любую помощь, которую вы можете предоставить.