我想在我的MSI安装目录中部署一堆文件。由于文件会经常更改,我不想直接添加文件,而是想自动包含目录中的所有文件并将其部署到特定位置。在MSI安装中动态地包含文件
我正在使用Visual Studio安装项目。
任何人都知道/如果这是可能的?
我想在我的MSI安装目录中部署一堆文件。由于文件会经常更改,我不想直接添加文件,而是想自动包含目录中的所有文件并将其部署到特定位置。在MSI安装中动态地包含文件
我正在使用Visual Studio安装项目。
任何人都知道/如果这是可能的?
我用一种变通方法解决了这个问题:
它简单而稳定。
使用什么?
WiX?的InstallShield?视觉工作室?明智的?的InstallAware?微星工厂?其他一些Windows Installer工具?
heat
在调用蜡烛/灯光之前生成(部分)WiX源。我在NSIS中通过在Perl中生成我的NSIS脚本的一部分并拥有一个包含动态脚本的主脚本来完成此操作。
简答:这绝对有可能。
选择文件夹路径并传递给此方法。它将按文件夹层次结构存在的顺序创建msi文件。
公共类InstallData { 公共无效GetWixData(串SOURCEPATH) { 尝试 { WixEntity [] weDir =新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] 公共静态的ActionResult MyAction(会话的会话) { MessageBox.Show( “世界,你好!”, “嵌入式管理CA”); session.Log(“Begin MyAction Hello World”);
return ActionResult.Success;
}
}
你怎么压缩和解压缩呢?有没有命令,或者你需要发送一个zip应用程序? – 2010-04-08 04:59:27
我工作的项目已经在适当的许可证下引用了ICSharpZipLib,所以C#自定义操作在我的情况下非常方便。 – user308623 2010-04-12 07:39:42
它是否也在卸载应用程序时卸载这些项目? – 2010-05-10 22:48:15