write_source_file

in lib/omnibus/packagers/msi.rb [398:439]


    def write_source_file
      paths = []

      
      install_dir = project.install_dir.split("/")[1..-1].join("/")

      
      Pathname.new(install_dir).ascend do |path|
        paths << path.to_s
      end

      
      hierarchy = paths.reverse.inject({}) do |hash, path|
        hash[File.basename(path)] = path.gsub(/[^[:alnum:]]/, "").upcase + "LOCATION"
        hash
      end

      
      
      hierarchy[hierarchy.keys.last] = "PROJECTLOCATION"

      
      
      
      wix_install_dir = if hierarchy.size > 1
                          hierarchy.to_a[-2][1]
                        else
                          "WINDOWSVOLUME"
                        end

      render_template(resource_path("source.wxs.erb"),
        destination: "#{staging_dir}/source.wxs",
        variables: {
          name: project.package_name,
          friendly_name: project.friendly_name,
          maintainer: project.maintainer,
          hierarchy: hierarchy,
          fastmsi: fast_msi,
          wix_install_dir: wix_install_dir,
        })
    end