3

我正在为64位计算机编写Visual Studio 2010中的安装程序。在那里,我使用自定义操作来获取安装过程中的CheckBox的值。如何在Visual Studio 2010中为c#安装程序编写自定义操作?

自定义操作如下:

/cbvalue="[CHECKBOXA1]" 

,并在我的安装程序类我加入以下代码来获取参数:

string myInput = Context.Parameters["cbvalue"]; 

的设置项目成功生成,但是当我尝试安装安装文件,在安装过程中,会出现以下错误:

Error: 1001 System.BadImageFormatException.could not load an assembly.....

当我在没有添加自定义操作的情况下尝试此操作时,它会正确安装。 而且我想找到一种方法来调试安装项目。

+0

该问题看起来类似于这个:[WiX自定义操作项目 - BadImageFormatException](http://stackoverflow.com/questions/6275680/wix-custom-action-project-badimageformatexception)。 – 2011-06-09 08:09:19

回答

0

你有没有添加自定义参数在安装(),像这样:

public override void Install(System.Collections.IDictionary stateSaver) 
{ 
    base.Install(stateSaver); 
    stateSaver.Add("cbvalue", Context.Parameters["cbvalue"].ToString()); 
} 

所以,你应该已经得到的东西是这样的:

public override void Commit(System.Collections.IDictionary savedState) 
{ 
    base.Commit(savedState); 
    System.Windows.Forms.MessageBox(savedState["bcvalue"].ToString());  
} 
+0

非常感谢您的快速帮助。我尝试过这些,但仍然遇到同样的错误。 – kalani 2011-06-09 06:13:40

0

如果您使用自定义创建64位安装程序总是记得你会得到这个错误,因为自定义操作总是使用x86架构来构建,所以你需要使用相同的自定义操作,然后使用ORCA Tool编辑你的msi,参见this link

相关问题