有没有办法在VS2008安装项目中包含版本号作为output.msi文件名的一部分?
我想要一个名为"myinstaller-1.0.13.msi"的输出文件,其中版本部分是根据我在部署项目属性中放置的版本号自动设置的.
web-deployment-project setup-project visual-studio visual-studio-2012
我正在尝试为Windows服务创建一个安装项目.我已按照http://support.microsoft.com/kb/816169上的说明创建安装项目,没有任何问题.
我希望能够在安装过程中获取一个值,以便使用用户所需的设置更新app.config.我添加了一个Textboxes(A)对话框来检索值.我设置了Edit1Property属性设置为"TIMETORUN",并在我的主输出操作的CustomActionData属性我把以下内容:/ TimeToRun ="[TIMETORUN] \".到现在为止还挺好.运行设置我可以从Context.Parameters集合中检索TimeToRun值而不会出现问题.
为了找到app.config,我还需要将TARGETDIR Windows Installer属性的值传递给我的自定义操作.事情开始分崩离析.为了实现这一点,必须改变上面的CustomActionData:/ TimeToRun ="[TIMETORUN] \"/ TargetDir ="[TARGETDIR] \".现在,当我运行安装程序时,我收到以下错误消息:
错误1001.初始化安装时发生异常.System.IO.FileNotFoundException:无法加载文件或程序集'file:/// C:\ Windows\SysWOW64\Files'或其依赖项之一.该系统找不到指定的文件.
如果谷歌这个问题,你将不可避免地发现通过简单地添加斜线到其巨大成功的人/ TARGETDIR ="[TARGETDIR] \"中的部分CustomActionData.遗憾的是,这并没有解决我的问题.
我尝试了很多不同的CustomActionData字符串变体,但没有一个工作.我试图登录到从我重写文件安装方法来确定破损了,不过没有创建日志文件,因为它甚至没有得到那么远.如错误所示,失败是在初始化步骤期间.
我有一种预感,它可能是安装项目试图加载的依赖项之一.也许某种东西被附加到CustomActionData字符串并且不能很好地与TARGETDIR值(包含空格,即"C:\ Program Files\My Company\Project Name")一起使用.同样,这是另一种预感,由于我无法调试设置过程,我似乎无法确认.
还有一点需要提及,是的,这是另一种预感,这可能是64位版Windows上安装项目的问题吗?我正在运行Windows 7 Professional.
我将提供依赖项的名称,以防它有用:
正如您可能从依赖项中收集的那样,Windows服务正在安排对DTSX包的调用.
对不起,长期咆哮.感谢您的任何帮助,您可以提供.
为什么在构建安装项目时会出现以下错误?
验证时发生错误.HRESULT ='80004005'
不知道为什么,但我发现很难找到可以用于WiX SetProperty声明的Before或After属性的标准值.
我知道以下两个,但我正在寻找一个更详尽的清单.
- AppSearch
- CostFinalize
这是一个使用它的例子:
<SetProperty Id="INSTALLFOLDER.WEBSITECLIENT" Value="[INETPUBWWWROOT]\[VIRTUAL_DIR_VAL]" Before="Install" />
Run Code Online (Sandbox Code Playgroud)
该手册/文档页面上有什么.
我使用Visual Studio 2010版本10.0.40.219.1 SP1 Rel创建了一个安装程序.我的应用程序是为x86构建/编译的,需要VC++运行时库.因此,安装项目配置为VC++运行时库作为先决条件.
每次运行安装程序时,我都会弹出"您的计算机上将安装以下组件"."Visual C++ 2010运行时库(x86)".它是第一次按预期安装.第二次及以后,它会询问我是否修复或删除VC++ 2010.
此弹出窗口应该只显示一次,第一次发现未安装VC++可再发行组件.
有没有人见过这个?有谁知道如何解决这个问题?
解:
我接受的答案给了我解决问题所需要的东西.以下是我为解决这个问题所做的工作的细节,事实上这非常简单.我编辑了文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86\product.xml
Run Code Online (Sandbox Code Playgroud)
在此文件中,您将找到以下内容:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
以上包含不正确的产品代码.将以上内容替换为Visual C++ 2010 SP1可再发行组件的正确产品代码,如下所示:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
此处的链接显示各种VC++ 2010 Redistributables的正确产品代码.
我在VS 2010中使用Windows Installer部署项目来为小型演示项目创建安装程序.该演示需要安装SQL Compact数据库文件(MyData.sdf).该演示无法将数据库安装到用户计算机上的应用程序文件夹中 - 如果我这样做,我会收到"拒绝访问"错误.因此,安装数据库的逻辑位置似乎是用户的c:\ ProgramData文件夹下的子文件夹.
如何在部署项目的文件系统编辑器中指定c:\ ProgramData文件夹?我右键单击目标计算机节点上的文件系统,将鼠标悬停在添加特殊文件夹上以查看特殊文件夹的弹出列表,但我没有看到与c:\ ProgramData文件夹对应的特殊文件夹.
列表中的一个条目是否与文件夹对应?我是否必须将其设置为自定义文件夹?如果我这样做,我将如何设置自定义文件夹?谢谢你的帮助.
我希望将许可协议添加到我的设置文件中(使用安装项目)如果用户不接受,则应取消安装.
请告知如何做到这一点.谢谢和最好的问候,Furqan
读者注意:请耐心等待.我保证会有一个问题.
我有一个问题需要解决并自己思考"哦,我会用Ruby做的."
$ bundle gem problemsolver
create problemsolver/Gemfile
create problemsolver/Rakefile
create problemsolver/.gitignore
create problemsolver/problemsolver.gemspec
create problemsolver/lib/problemsolver.rb
create problemsolver/lib/problemsolver/version.rb
Initializating git repo in /tmp/harang/problemsolver
Run Code Online (Sandbox Code Playgroud)
删除s.add_development_dependency "rspec"in中的注释problemsolver/problemsolver.gemspec然后
$ bundle exec rspec --init
The --configure option no longer needs any arguments, so true was ignored.
create spec/spec_helper.rb
create .rspec
Run Code Online (Sandbox Code Playgroud)
新的测试进入spec/并且必须在最终的文件中_spec.rb.例如,spec/version_spec.rb
describe 'Problemsolver' do
it 'should be at version 0.0.1' do
Problemsolver::VERSION.should == '0.0.1'
end
end
Run Code Online (Sandbox Code Playgroud)
要运行规范 - 忽略像守卫这样的代码更改运行者 - 这是微不足道的:
$ …Run Code Online (Sandbox Code Playgroud) 我有一个VS2013安装项目,它构建安装由两个C#项目生成的exes的设置.当我构建安装项目时,我得到重复的消息,好像有两个构建过程.我从安装项目的输出中删除了两个exes中的一个,但我仍然得到重复的消息.
------ Starting pre-build validation for project 'SetupWindowsService' ------
------ Starting pre-build validation for project 'SetupWindowsService' ------
------ Pre-build validation for project 'SetupWindowsService' completed ------
------ Pre-build validation for project 'SetupWindowsService' completed ------
2>------ Build started: Project: SetupWindowsService, Configuration: Release ------
2>------ Build started: Project: SetupWindowsService, Configuration: Release ------
Building file 'C:\projects\SetupTESTWindowsService\Release\SetupWindowsService.msi'...
Building file 'C:\projects\SetupTESTWindowsService\Release\SetupWindowsService.msi'...
Packaging file 'MoreLinq.dll'...
Packaging file 'MoreLinq.dll'...
Packaging file 'System.Web.Razor.dll'...
Packaging file 'System.Web.Razor.dll'...
................
Run Code Online (Sandbox Code Playgroud)
所有dll依赖项都是重复的.构建项目产生的输出是可以的(即msi文件).TargetPlatform是x86.在配置管理器中,Active解决方案平台是Any CPU,Active解决方案配置是Release.安装项目所依赖的所有项目都是Release/Any CPU.
这是正常的吗?我正在使用在Win 7 64位Ultimate上运行的VS 2013 Premium Update 3.
谢谢
只是更新:我在notepad …
setup-project ×10
bootstrapper ×1
bundler ×1
c#-4.0 ×1
deployment ×1
haskell ×1
installer ×1
ruby ×1
ssis ×1
tdd ×1
vb.net ×1
visual-c++ ×1
wix ×1