EXE文件无法正常工作

我有一个.msi(Windows安装程序包)文件到我的项目中。 我成功地从.msi文件生成了.exe文件,但每当我尝试打开该.exe文件或以管理员身份运行时它什么都不做。 怎么解决这个? 对此有所帮助。 请帮忙

更新这是我的.msi文件的代码

components.wxs

      <!---->                  <!---->       

product.wxs

                  

您可以使用如下命令行调试msi安装:

 msiexec /i someapplication.msi /L*vx log.txt 

这将运行安装程序并将日志信息输出到名为log.txt的文件中。

另请参阅: Windows Installer命令行选项

另一个专业提示是在虚拟机中调试安装程序。 在安装之前拍摄快照,以便您可以回滚,或在更改代码后从重现状态开始重复安装。 我无法想象没有Hyper-V的调试安装程序 – 这对我来说很重要。

这基本上只是从臀部射击,请忽略任何不相关的东西(可能先检查最后三个要点):

最佳实践 :首先,您使用单个组件安装多个二进制文件。 这违反了组件创建的最佳实践 。

  • 对于这么小的东西,我建议你每个文件使用一个组件 。 这解决了修补,升级和其他方面的各种未来问题。

  • 如果组件规则被破坏会发生什么? 请浏览一下,或者接受我们的说法,每个组件只使用一个文件。 至少为所有二进制文件创建一个单独的组件(必需)。

  • 关于组件GUID的性质和理念有点模糊: 在wix中更改我的组件GUID? 有些人发现了解神秘且总是麻烦的组件GUID很有帮助。

  • 如果您坚持每个组件使用多个文件,请确保该组件的密钥文件是版本化文件。 我认为WiX会自动魔术。

    • 如果您没有版本化的密钥文件,则如果目标位置中已存在文件,则可能会使组件完全无法安装。

    • 如果您有版本化密钥文件,请确保您的安装版本的二进制文件版本高于目标位置磁盘上可能遇到的版本二进制文件(如果有)。 有关说明,请阅读有关MSI文件版本控制规则的信息。

日志记录 :您的应用程序是否具有可用于调试的日志function(默认情况下或您可以启用的function)? 也许到系统的事件日志? 服务不会写在那里吗?

依赖关系 :另外,你是否检查了我之前提供的关于依赖性检查的指针? 复制到另一个位置时C#Debug文件夹不运行exe 。

  • 首先检查Visual Studio中的模块视图 ,然后使用Dependencies.exe检查缺少的依赖项?

  • 使用procmon.exe有点牵扯,但几乎总能揭示以其他方式难以检测的意外和问题: 使用Wix Msi安装程序在安装后将CPP dll注册到COM中

  • Fuslogvw.exe会告诉你什么吗? (.NET程序集绑定失败)。

服务凭据 :您确定在安装期间是否应用了这些登录凭据

  • 您是否尝试手动设置它们以查看该服务是否会运行? 您是否将这些属性添加到SecureCustomProperties允许传递到延迟安装模式的属性列表中?
  • 我认为WiX在这里有“自动魔术”并为你做这件事,我忘记了。 使用适当的工具(例如Orca)检查最终编译的MSI的属性表中的SecureCustomProperties。
  • 使用延迟的服务启动设置,服务是否正在运行? (至少要提到它)。 或者你说它在发射时崩溃了吗?

硬编码引用 :指向缺少资源的指针。

  • 您是否检查了所有清单文件配置文件FileWatcher.exe.config )中是否存在指向开发人员资源上的资源(错误的,硬编码的引用)?
  • 可能缺少资源文件? (图像,dll等……)。

体系结构和运行时要求 :目标计算机与开发人员计算机的架构是否相同? 只是为了粉笔,肯定你会看到关于这个的警告?

  • 您的代码所针对的CPU是多少? 任何CPU? 您是否尝试在另一台计算机上手动注册文件(可能是干净的虚拟机)。
  • 目标计算机有什么特别之处吗? 它有奇怪的政策吗? 是否有安全软件阻止事情? 它是否缺少开发计算机上安装的公共运行时组件 ? (.NET,VC ++运行时,VC运行时,java等)。 这些是procmon.exe会话应该显示的内容,或者是Dependencies.exe应该显示的检查。
  • 您使用臭名昭着的FileSystemWatcher .NET类吗? 我多年前才使用过它,但它给我带来了很多的悲伤,我不得不停止使用它。 它确实导致我的服务文件崩溃。

    • 如果你使用这门课,我会在这里挖掘一些链接。

    • 现在发现了一对: FileSystemWatcher事件虽然采取了针对它的措施而提升了两次,并且FileSystemWatcher vs polling来监视文件更改 。