Получение местоположения setup.exe в настраиваемом действии
-
11-09-2019 - |
Вопрос
С# 2005
Я использую класс установщика, так как мне нужно настраиваемое действие, которое будет читаться в файле конфигурации XML.
Поэтому, когда пользователь дважды щелкает настройку, в той же папке появится файл config.xml.Я хотел бы прочитать этот файл config.xml при событии установки.Папка будет содержать setup.exe и config.xml.
Однако он не может найти файл config.xml, поскольку ищет его в папке C:\windows\system32.Я узнал об этом, используя applicationstartup.path.Однако папка установки, содержащая файлы setup и config.xml, находится на моем рабочем столе.
Я думал, он будет искать его в текущем местоположении.Это будет папка установки.
Сложность в том, что моя папка установки будет загружена из Интернета и любой пользователь сможет скачать ее и разархивировать в любое место на своем компьютере.
Вот мой фрагмент кода для события установки.
Большое спасибо за любой совет
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());
}
Решение 3
Мне удалось это решить.
Ответом было просто написать простой bat-файл, который сделает всю работу за меня.Затем bat-файл вызовет программу установки и установит приложение.
Спасибо,
Другие советы
Если предположить, что вы говорите о MSI, разве это не Исходная база данных свойство?
Предположим, вы не опечатываете CAT_TargetDir
вместо TARGETDIR
вы можете сделать следующее обходное решение:установите CustomActionData и передайте TARGETDIR в качестве аргумента вашего настраиваемого действия.Это не самое элегантное решение, но оно должно работать довольно легко.
Вы также можете попробовать это: Мне требуется пользовательское действие MSI, которое копирует файл из исходного каталога MSI.