Получение местоположения setup.exe в настраиваемом действии - PullRequest
1 голос
/ 18 апреля 2009

C # 2005

Я использую класс установщика, так как мне нужно пользовательское действие, которое будет читаться в файле конфигурации xml.

Таким образом, когда пользователь дважды щелкнет по настройке, в той же папке будет файл config.xml. Я хотел бы прочитать в этом файле config.xml на событие установки. Папка будет содержать setup.exe и config.xml

Однако он не может найти файл config.xml, так как ищет его в C: \ windows \ system32. Я узнал об этом с помощью applicationstartup.path. Однако папка установки, содержащая файл setup и config.xml, находится на моем рабочем столе.

Я думал, что он будет искать его в текущем местоположении. Это будет папка установки.

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

Вот мой фрагмент кода для события on install.

Большое спасибо за любой совет

protected override void OnAfterInstall(System.Collections.IDictionary savedState)
    {
        DataTable dt = new DataTable();
        MessageBox.Show(Application.StartupPath.ToString());
        dt.ReadXml("config.xml");

        MessageBox.Show(base.Context.Parameters["CAT_TargetDir"].ToString());
    } 

Ответы [ 4 ]

1 голос
/ 02 августа 2009

Предполагая, что вы не набрали CAT_TargetDir вместо TARGETDIR, вы можете сделать следующий обходной путь: установить CustomActionData и передать TARGETDIR в качестве аргумента для вашего пользовательского действия. Это не самое элегантное решение, но оно должно работать довольно легко.

1 голос
/ 19 мая 2009

Если вы говорите о MSI, разве это не свойство OriginalDatabase ?

0 голосов
/ 19 января 2010
0 голосов
/ 15 января 2010

Мне удалось решить это.

Ответ был просто написать простой файл bat, который сделает всю работу за меня. Затем файл bat вызовет программу установки и установки приложения.

Спасибо

...