【发布时间】:2016-07-13 16:24:21
【问题描述】:
我正在尝试使用 Windows 安装程序作为安装方法制作应用程序。安装成功后,我想获取我在安装程序中配置的主要输出所在的路径。就我而言,主要输出位于文件夹 [ApplicationData(Installroot)]\Bin\。
我的类库中还有一个名为 App.Settings 的自定义设置文件,它控制多个设置,例如相对于安装位置的文件位置。
所以想法是,当安装成功时,它应该调用 App.Settings 并将安装文件夹保存到设置文件中。
我已经创建了一个安装类并将其放入类库中。我不确定它是否应该在那个项目中。 这是安装类的代码:
using System.Collections;
using System.ComponentModel;
namespace WaspbaneModels
{
[RunInstaller(true)]
public partial class Installer : System.Configuration.Install.Installer
{
public Installer()
{
InitializeComponent();
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
SettingsControl.BaseURL = Context.Parameters["assemblypath"];
SettingsControl.Save();
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
}
}
在这段代码中,SettingsControl 是一个简单地使用一些属性来处理设置的类。我使用了这个类,以便我的 Windows 窗体项目也可以访问这些设置。
在“自定义操作”选项卡中,我还将主输出添加到所有内容。我也不确定这是否正确,因为我认为主输出包含所有 .dll 文件,包括类库。
我不确定从哪里继续,因为设置没有保存。我只是通过在应用程序启动时放置一个消息框来检查这一点,给我设置的值。
任何对项目的更多数据感兴趣的人都可以询问。我只是暂时不会发布所有内容。
编辑:
经过更多测试后,我设法发现没有调用 Installer 类。我添加了一些内容,当该方法被调用但没有发生任何事情时,它会写入文件。
因此我现在的问题是:如何正确地将自定义操作添加到安装项目?
【问题讨论】:
标签: c# windows-installer setup-project custom-action settings.settings