我正在尝试在MSI设置的目录中部署一堆文件。由于文件会经常更改,我不想直接添加文件,而是有办法自动包含目录中的所有文件并将它们部署到某个位置。
我正在使用Visual Studio安装项目。
有人知道这是怎么回事?
答案 0 :(得分:1)
我通过解决方法解决了这个问题:
它简单而稳定。
答案 1 :(得分:0)
使用什么????
维克斯?的InstallShield?视觉工作室?明智的?的InstallAware?微星工厂?其他一些Windows Installer工具?
heat
生成(部分)WiX来源。答案 2 :(得分:0)
我在NSIS中通过在Perl中生成部分NSIS脚本并使用包含动态脚本的主脚本来完成此操作。
简短的回答:这绝对是可能的。
答案 3 :(得分:0)
选择文件夹路径并传递给此方法。它将按照文件夹层次结构存在的顺序创建msi文件。
公共类InstallData { public void GetWixData(string SourcePath) { 尝试 { WixEntity [] weDir = new WixEntity [0]; weDir = BuildDirInfo(SourcePath,weDir);
var project = new Project("My Product", new Dir("MyDB", weDir), new ManagedAction("MyAction"))
{
GUID = Guid.NewGuid(),
UI = WUI.WixUI_InstallDir,
Manufacturer = "xxx Inc.",
};
try
{
Compiler.BuildMsi(project, Application.StartupPath);
}
catch (Exception ex)
{
}
}
catch (Exception Ex)
{
}
}
private WixEntity[] BuildDirInfo(string sRootDir, WixEntity[] weDir)
{
DirectoryInfo RootDirInfo = new DirectoryInfo(sRootDir);
if (RootDirInfo.Exists)
{
DirectoryInfo[] DirInfo = RootDirInfo.GetDirectories();
List<string> lMainDirs = new List<string>();
foreach (DirectoryInfo DirInfoSub in DirInfo)
lMainDirs.Add(DirInfoSub.FullName);
int cnt = lMainDirs.Count;
weDir = new WixEntity[cnt + 1];
if (cnt == 0)
weDir[0] = new DirFiles(RootDirInfo.FullName + @"\*.*");
else
{
weDir[cnt] = new DirFiles(RootDirInfo.FullName + @"\*.*");
for (int i = 0; i < cnt; i++)
{
DirectoryInfo RootSubDirInfo = new DirectoryInfo(lMainDirs[i]);
if (!RootSubDirInfo.Exists)
continue;
WixEntity[] weSubDir = new WixEntity[0];
weSubDir = BuildDirInfo(RootSubDirInfo.FullName, weSubDir);
weDir[i] = new Dir(RootSubDirInfo.Name, weSubDir);
}
}
}
return weDir;
}
}
公共类CustomActions { [CustomAction] public static ActionResult MyAction(Session session) { MessageBox.Show(“Hello World!”,“Embedded Managed CA”); session.Log(“开始MyAction Hello World”);
return ActionResult.Success;
}
}