【问题标题】:How can I change the location of an .InstallState file in a Visual Studio generated MSI如何在 Visual Studio 生成的 MSI 中更改 .InstallState 文件的位置
【发布时间】:2008-11-06 15:15:15
【问题描述】:

我有一个使用 Visual Studio 安装项目创建的 MSI 文件。安装程序会在应用程序目录中生成一个 .InstallState 文件。有没有办法让这个文件在不同的位置而不是默认位置生成?

【问题讨论】:

    标签: .net visual-studio installation


    【解决方案1】:

    您需要设置 InstallStateDir 的值。
    您需要覆盖 Commit/Install/Rollback/Uninstall 并设置 InstallStateDir 的值 (I.E. Context["InstallStateDir"] = @"c:\mydir") .

    【讨论】:

      【解决方案2】:

      这也应该通过在命令行中指定 /InstallStateDir="c:\myfolder" 来工作(参见 KB946503)。但是,InstallContext 正在将所有参数名称转换为小写,这会破坏 AssemblyInstaller 中的以下代码,期望找到混合大小写的参数名称:

      private string GetInstallStatePath(string assemblyPath)
      {
          string str2 = base.Context.Parameters["InstallStateDir"];
          assemblyPath = Path.ChangeExtension(assemblyPath, ".InstallState");
          if (!string.IsNullOrEmpty(str2))
          {
              return Path.Combine(str2, Path.GetFileName(assemblyPath));
          }
          return assemblyPath;
      }
      

      设置Context["InstallStateDir"] 可能会用于保存状态;但是,由于在Uninstall 可以修改上下文之前加载了状态,因此在微软修复上述AssemblyInstaller.GetInstallStatePath 方法之前,这不是可行的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多