我有一个项目有很多插件和配置文件。现在我正在为它做一个Visual Studio安装项目。
我不想手动添加每个配置文件到安装项目,所以我想这样做:Visual Studio安装项目 - 快捷方式导致安装回滚
- 创建一个空的压缩文件,说config.zip,并将其添加到安装项目
- 添加一个预生成操作,将所有配置文件压缩到config.zip
- 添加运行vbs脚本的自定义操作,该脚本将config.zip解压缩到正确的文件夹并将其删除。
的vbs脚本如下:
sArchiveName = "Config.zip"
sLocation = "C:\Data\Configurations"
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("Wscript.Shell")
oShell.Run """" & s7zLocation & "7z.exe"" x " & sLocation & "\" & sArchiveName & " -aoa -o" & sLocation, 1, True
'--- If I uncomment the following 2 lines,
'--- as I click on the shortcuts the installation rollbacks.
'--- If I leave them the shortcuts work fine.
'Set f = oFSO.GetFile(sLocation & "\" & sArchiveName)
'f.Delete True
我的问题是,我在程序菜单中添加快捷方式会导致安装的回滚。原因是在安装过程结束时删除config.zip。如果我离开它一切正常。
我已经搜索了一个解决方案,但找不到任何东西,有人可以帮我吗?
这是一个自我修复的问题,我已经明白了。但我认为有一种方法可以告诉Windows Installer不要跟踪特定的文件。该项目有很多由不同人开发的插件,所以我想避免每个人都必须把他的手放到设置项目中。现在我知道这是不可能的,谢谢! –
有一种方法,但我担心它会导致你误入歧途。如果你设置了一个“空白组件GUID”,该文件将被安装,但从未跟踪或卸载 - 这将消除自我修复。看起来像解决您的问题,但它并不理想。您有时在新安装时遇到文件覆盖问题(未安装新文件)。如果你删除了zip文件,这个问题也不应该发生,但我不喜欢这种设计 - 这是不好的部署。首选的方法是使用WiX,并在项目设置完成后让每个开发人员添加一个简单的XML元素来添加他们的文件。 –