Я создал проект установки для своего проекта.Этот проект подключается к работающему серверу БД через службы asmx.Этот URL будет определен после того, как клиент развернет веб-службы на каком-либо сервере.Поэтому в проекте установки я добавил диалог «TextBoxes» в разделе «Редактор интерфейса пользователя» в проекте установки, где я включил только один TextBox для получения URL-адреса развернутых сервисов.В моем проекте я добавил файл, который будет выполняться во время установки программы установки, и определил его следующим образом:
[RunInstaller(true)]
public class InstallerHelper : System.Configuration.Install.Installer
{
// Other Code also exists that is not needed to be shown here<br/>
//.....
// The following method gets executed during setup installation
public override void Install(IDictionary stateSaver)
{
try
{
base.Install(stateSaver);
//Proceed only if the Context object has some parameters
if (Context.Parameters.Count != 0 && !string.IsNullOrEmpty(Context.Parameters["WEBSITEURL"]))
{
//Get the installation Folder's Path
string installationFolder = Context.Parameters["INSTALLFOLDER"];
// Get the Site's URL entered by Client
string websiteUrl = Context.Parameters["WEBSITEURL"];
//Create different Key Value pairs based on entered URL
string[][] keyValues = {
new string[] {"SiteUrl",websiteUrl},
new string[] {"WebServiceURL", websiteUrl + "Users.asmx" },
new string[] {"TicketsServiceURL", websiteUrl + "Tickets.asmx"},
new string[] {"CampaignsAndProjetcsServiceURL", websiteUrl + "CampaignsAndProjetcs.asmx"},
new string[] {"EntitiesURL", websiteUrl + "Entities.asmx"},
new string[] {"AccountsURL", websiteUrl + "Accounts.asmx"},
new string[] {"TransactionsURL", websiteUrl + "Transactions.asmx"},
new string[] {"RelatedReportsURL", websiteUrl + "RelatedReports.asmx"},
new string[] {"GiftAidsURL", websiteUrl + "GiftAids.asmx"}
};
// Load the app.Config file and store these values in it.
//********************************************
string configFilePath = installationFolder + @"\MyProject.exe.config";
XmlDocument configuration = new XmlDocument();
// Load App.Config File
configuration.Load(configFilePath);
//Add the values in it
Utility.UpdateValue(keyValues, configuration);
//Save configuration File
configuration.Save(configFilePath);
//********************************************<br/>
}
}
catch (Exception ex)
{
throw new InstallException("The following Error(s) occured during installation. \n " + ex.Message);
}
}
}
Здесь я сохраняю введенный URL-адрес и некоторые другие сгенерированные URL-адресаразличные веб-сервисы в App.Config проекта, которые будут использоваться в проекте для доступа к данным.
Работает нормально, когда я устанавливаю свежую копию программы установки, но проблема возникает, когда я пытаюсь восстановить установленный проект, снова выполняя файл Setup.exe.
Процесс восстановления не запрашиваетчтобы я снова ввел URL, а также элементы, сохраненные в App.Config во время первой установки, будут потеряны.Таким образом, все приложение перестает работать.
Любая помощь с благодарностью